Comment faire un Integer.parseInt () pour un nombre décimal?

Le code Java est le suivant:

Ssortingng s = "0.01"; int i = Integer.parseInt(s); 

Cependant, cela lance une NumberFormatException … Qu’est-ce qui pourrait mal se passer?

0.01 n’est pas un entier (nombre entier), vous ne pouvez donc pas l’parsingr. Utilisez Double.parseDouble ou Float.parseFloat .

 Ssortingng s = "0.01"; double d = Double.parseDouble(s); int i = (int) d; 

La raison de l’exception est qu’un entier ne contient pas de nombres rationnels (= essentiellement des fractions). Donc, essayer d’parsingr 0.3 en int est un non-sens. Un type de données double ou float peut contenir des nombres rationnels.

La manière dont Java jette un double dans un int se fait en supprimant la partie après le séparateur décimal en arrondissant vers zéro .

 int i = (int) 0.9999; 

i vais par zéro.

Utilisation,

 Ssortingng s="0.01"; int i= new Double(s).intValue(); 
 Ssortingng s="0.01"; int i = Double.valueOf(s).intValue(); 

Ce type de conversion est étonnamment peu intuitif en Java

Prenez par exemple une chaîne suivante: “100.00”

C: une simple fonction standard de bibliothèque depuis au moins 1971 (d’ où vient le nom `atoi`? )

 int i = atoi(decimalssortingng); 

Java: passage obligatoire par parsing double (ou flottante), suivi d’un transtypage

 int i = (int)Double.parseDouble(decimalssortingng); 

Java a sûrement quelques bizarreries dans sa manche

Utiliser BigDecimal pour arrondir:

 Ssortingng s1="0.01"; int i1 = new BigDecimal(s1).setScale(0, RoundingMode.HALF_UP).intValueExact(); Ssortingng s2="0.5"; int i2 = new BigDecimal(s2).setScale(0, RoundingMode.HALF_UP).intValueExact(); 

supposons que nous prenions un entier dans la chaîne.

Ssortingng 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

Ssortingng 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 d’obtenir.

utilise celui-ci

int number = (int) Double.parseDouble(s);

Utilisez Double.parseDouble(Ssortingng a) ce que vous recherchez n’est pas un entier, car il ne s’agit pas d’un nombre entier.