2016-06-08 1 views
-3

Je reçois une exception de format numérique, je ne sais pas ce que je fais mal.Obtention Exception de format numérique

public static void main(String[] args) { 

    int v = 1476423; 
    double d = v; 
    System.out.println("Double "+v); 
    String s = String.valueOf(d); 
    System.out.println("String "+s); 
    v = Integer.parseInt(s); 
    System.out.println("Integer "+v); 
} 

Lorsque j'essaie d'imprimer v, il s'agit d'une exception de format numérique. Quelqu'un peut-il aider ici?

Erreur:

Double 1476423 
String 1476423.0 
Exception in thread "main" java.lang.NumberFormatException: For input string: "1476423.0" 
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
    at java.lang.Integer.parseInt(Integer.java:580) 
    at java.lang.Integer.parseInt(Integer.java:615) 
    at testCases.Random.main(Random.java:12) 
+3

Vous ne pouvez pas analyser un nombre à virgule flottante en nombre entier –

Répondre

2

Ceci est évidemment pas une valeur entière, il a une partie décimale, même si elle est nulle:

"1476423.0" 

Ou faire ceci:

int v = Integer.parseInt("1476423"); 

Ou ceci:

double d = Double.parseDouble("1476423.0"); 
+0

J'essayais juste d'autres choses, en fait le problème est que j'obtiens une 'chaîne' avec un' .' donc je voulais le convertir en 'int' et enlever le '.0' – DisplayName

+0

Ensuite, retirez-le, voir ma réponse ici: http://stackoverflow.com/a/10372905/201359 –

+0

Si ce qui précède a répondu à votre question, s'il vous plaît ne pas oublier de l'accepter, il suffit de cliquer sur le cochez à gauche –

0

Vous pouvez résoudre le problème en supprimant cette ligne

v = Integer.parseInt(s); 

Mais le problème est que double d = v; fait v un nombre à virgule flottante, que vous convertir en une chaîne, puis essayez de reconvertir en un int, ce qui n'est pas très clair pourquoi vous faites cela parce que vous ne changez pas la valeur de v en aucune façon.

+0

J'essayais juste d'autres choses, en fait le problème est que j'obtiens un 'string' avec un' .' donc je voulais le convertir en 'int' et enlever le' .0' – DisplayName

+0

Oui, un la représentation sous forme de chaîne d'un nombre à virgule flottante (en d'autres termes, une décimale) ne peut pas être analysée en un entier car les entiers ne contiennent pas de nombres décimaux –