2017-01-18 3 views
-4

Impossible d'analyser le numéro sous le numéro.Obtention de l'excpetion de format numérique

Long.parseLong("1000.00".length() > 0 ? "1000.00" : "0") 

Lors de l'analyse de "1000.00", obtention de l'exception de format numérique. Comment analyser "1000.00" cette chaîne en long en java?

+4

La zone longue n'a pas de point décimal. –

+1

'long's sont des nombres entiers. '" 1000 "' fonctionnerait. '" 1000.00 "' a une partie fractionnaire (qui est zéro, mais quand même), ce qui ne sera pas le cas. –

+0

Pourquoi sa downvoted? –

Répondre

5

long s sont des nombres entiers. "1000" fonctionnerait. "1000.00" a une partie fractionnaire (qui est zéro, mais toujours), ce qui ne sera pas. Comment analyser "1000.00" cette chaîne en long en Java?

Comment analyser "1000.00" cette chaîne en long en Java?

Dans le cas général, vous ne pouvez pas; long ne peut pas stocker une partie fractionnaire.

Maintenant, dans votre exemple spécifique, la partie décimale est égale à zéro, de sorte que vous pourrait supprimer simplement:

long result = Long.parseLong("1000.00".split("\\.")[0]); 

Ou vous pouvez l'analyser comme un double puis tronquer:

long result = (long)Double.parseDouble("1000.00"); 

... mais encore une fois, prenez garde que long est un type intégral qui ne supporte pas les valeurs fractionnaires.

+0

L'ensemble du code est un non-sens. Pourquoi n'utilise-t-il pas la "longueur" réelle de la chaîne et c'est tout ... –

0

supprimer le point décimal ou une partie de cette chaîne, un long est en fait un nombre entier ayant une capacité de 64 bits ...

System.out.println(Long.parseLong("1000.00".length() > 0 ? "1000" : "0")); 
0
(long)Double.parseDouble("1000.00".length() > 0 ? "1000.00" : "0")