OVH Cloud OVH Cloud

double avec virgule ou point

5 réponses
Avatar
Sylvain
Bonjour,

J'écris un contrôle de valeur saisie dans un champ texte et en testant les
types flottants, je viens d'avoir une surprise.
La ligne : Double.valueOf(chaineATester) lève une exception dans les cas
suivant :
- un nombre entier (ennuyeux ...)
- un décimal avec un point (125.36)
et passe correctement avec un décimal à virgule (125,36).

Donc deux questions :
- pourquoi l'entier n'est-il pas accepté ?
- comment le faire utiliser le point comme séparateur par défault pour le
flottants (une histoire de Locale sûrement mais je ne sais plus où ...).

Merci à tous

Sylvain caillet

5 réponses

Avatar
Sylvain
Un petit coup de fatigue pour l'histoire du point et de la virgule ...
désolé, oublions. Mais je conserve la question qui concerne l'exception
levée par Double.valueOf("1") qui m'intrigue un peu ...

Sylvain

"Sylvain" a écrit dans le message de news:
41c2991d$0$11233$
Bonjour,

J'écris un contrôle de valeur saisie dans un champ texte et en testant les
types flottants, je viens d'avoir une surprise.
La ligne : Double.valueOf(chaineATester) lève une exception dans les cas
suivant :
- un nombre entier (ennuyeux ...)
- un décimal avec un point (125.36)
et passe correctement avec un décimal à virgule (125,36).

Donc deux questions :
- pourquoi l'entier n'est-il pas accepté ?
- comment le faire utiliser le point comme séparateur par défault pour le
flottants (une histoire de Locale sûrement mais je ne sais plus où ...).

Merci à tous

Sylvain caillet



Avatar
Thibal
Sylvain wrote:
Bonjour,

J'écris un contrôle de valeur saisie dans un champ texte et en testant les
types flottants, je viens d'avoir une surprise.
La ligne : Double.valueOf(chaineATester) lève une exception dans les cas
suivant :
- un nombre entier (ennuyeux ...)
- un décimal avec un point (125.36)
et passe correctement avec un décimal à virgule (125,36).

Donc deux questions :
- pourquoi l'entier n'est-il pas accepté ?
- comment le faire utiliser le point comme séparateur par défault pour le
flottants (une histoire de Locale sûrement mais je ne sais plus où ...).

Merci à tous

Sylvain caillet


Bonjour,

Commence par lire la Javadoc concernant la méthode valueOf(), on peut y
trouver pas mal d'informations sur le format des chaines acceptées.

Avatar
Sylvain
merci, c'est vrai que des fois on pense qu'il n'y rien pour des trucs aussi
simples qu'un wrapper ... et pourtant !

Sylvain
"Thibal" a écrit dans le message de news:
cpu6h9$1isk$
Sylvain wrote:
Bonjour,

J'écris un contrôle de valeur saisie dans un champ texte et en testant
les types flottants, je viens d'avoir une surprise.
La ligne : Double.valueOf(chaineATester) lève une exception dans les cas
suivant :
- un nombre entier (ennuyeux ...)
- un décimal avec un point (125.36)
et passe correctement avec un décimal à virgule (125,36).

Donc deux questions :
- pourquoi l'entier n'est-il pas accepté ?
- comment le faire utiliser le point comme séparateur par défault pour le
flottants (une histoire de Locale sûrement mais je ne sais plus où ...).

Merci à tous

Sylvain caillet


Bonjour,

Commence par lire la Javadoc concernant la méthode valueOf(), on peut y
trouver pas mal d'informations sur le format des chaines acceptées.



Avatar
Thibal
Sylvain wrote:

Un petit coup de fatigue pour l'histoire du point et de la virgule ...
désolé, oublions. Mais je conserve la question qui concerne l'exception
levée par Double.valueOf("1") qui m'intrigue un peu ...


Parceque 1 est en effet un entier et non un décimal, je pense que c'est
comme quand tu écris du code Java. Tu n'as pas le droit d'écrire double
monDouble = 1; mais tu dois écrire monDouble = 1.0;

Je pense que là c'est le même problème, à toi de remettre ta chaine de
caractères en forme avant de la parser. Détectes s'il y'a une virgule ou
un point et sinon tu le rajoutes avec un 0 derrière.

C'est vrai que ca parait bizarre de penser que les mecs qui ont écrit
valueOf n'ont pas pensé à ça. à mon avis c'est volontaire donc
incontournable...

P.S: Si j'ai dit de la merde et que quelqu'un détient la vérité, je suis
preneur ;)


Bonne chance pour la suite,


Thibaut

Avatar
Francis JUGE-BOIRARD
Bonjour,
Je pense qu'une solution pourra venir de la class java.text.NumberFormat.

Voilà ... Bon courage...