Le code Java est le suivant:
String s = "0.01";
int i = Integer.parseInt(s);
Cependant, une exception NumberFormatException est lancée ... Qu'est-ce qui pourrait mal se passer?
0.01 n'est pas un entier (nombre entier), vous ne pouvez donc bien sûr pas l'analyser comme un entier. Utilisation Double.parseDouble
ou Float.parseFloat
au lieu.
String s = "0.01";
double d = Double.parseDouble(s);
int i = (int) d;
La raison de cette exception est qu'un entier ne contient pas de nombres rationnels (= essentiellement des fractions). Donc, en essayant d'analyser 0.3
à un int est un non-sens. Un type de données double
ou float
peut contenir des nombres rationnels.
Le chemin Java convertit un double
en un int
est effectué par en supprimant la partie après le séparateur décimal en arrondissant à zéro.
int i = (int) 0.9999;
i
sera à zéro.
Utilisation,
String s="0.01";
int i= new Double(s).intValue();
String s="0.01";
int i = Double.valueOf(s).intValue();
Ce type de conversion est étonnamment peu intuitif en Java
Prenons par exemple une chaîne suivante: "100.00"
C: une fonction de bibliothèque standard simple au moins depuis 1971 ( D'où vient le nom `atoi`?? )
int i = atoi(decimalstring);
Java: passage obligatoire par double (ou float), suivi d'un cast
int i = (int)Double.parseDouble(decimalstring);
Java a certainement des bizarreries dans sa manche
Utiliser BigDecimal pour arrondir:
String s1="0.01";
int i1 = new BigDecimal(s1).setScale(0, RoundingMode.HALF_UP).intValueExact();
String s2="0.5";
int i2 = new BigDecimal(s2).setScale(0, RoundingMode.HALF_UP).intValueExact();
supposons que nous prenions un entier dans la chaîne.
Chaîne s = "100"; int i = Integer.parseInt (s); ou int i = Integer.valueOf (s);
mais dans votre question le nombre que vous essayez de faire le changement est le nombre entier
String s = "10.00";
double d = Double.parseDouble (s);
int i = (int) d;
De cette façon, vous obtenez la réponse à la valeur que vous essayez de l’obtenir.
Utilisez Double.parseDouble(String a)
ce que vous recherchez n'est pas un entier puisqu'il ne s'agit pas d'un nombre entier.
utiliser celui-ci
int number = (int) Double.parseDouble(s);