Bonjour
svp besoin d'aide
je veux convertir "7,33" à un double mais je peux pas utiliser Double.parse.. à cause de la virgule alors qu'est ce que je peux faire?
cordialment
-----
Bonjour
svp besoin d'aide
je veux convertir "7,33" à un double mais je peux pas utiliser Double.parse.. à cause de la virgule alors qu'est ce que je peux faire?
cordialment
Tu utilises la classe NumberFormat avecCela va te donner une instance qui a une méthode parse et celle-ci supportera le format français.NumberFormat.getNumberInstance (Locale.FRENCH)
Salut,
Tu as un code à présenter ?
Essaies un truc du genre (sans garantie !) :
Mais ce serait plus propre avec un CultureInfo... (je te laisse chercher)...Code:double nombre=0; string chaine = "7,33"; NumberFormatInfo nf= new NumberFormatInfo(); nf.NumberDecimalSeparator = ","; bool result = double.TryParse(chaine, NumberStyles.Number, nf, out nombre);
Il y a aussi moyen (crade) avec un Replace... (je te laisse chercher aussi...).
J'ai glissé Chef !
C'est bien possible que je me sois embrouillé... je fais plus de Java depuis des années, essentiellement du c#...
J'ai glissé Chef !
Peut-être comme ça :
Code:doublle re; String s; String[] ss; s ="7,33"; ss = split(s, ","); re = int(ss[0]); // Donne 7 re = re + int(ss[1]) / (pow(10, ss[1].length())); // Donne 7.330000013113022
En effet et c'est pire que crade, c'est faux. Cela fait une erreur si on parse un nombre sans partie décimale, cela accepte 7.-33, ne supporte pas la notation scientifique...
Et si par hasard on lui passe un nombre en notation américaine comme "7,333.5", cela va le résoudre en 7 + 0,333 sans erreur.
Si c'est pour faire quelque chose qui ne parse que 1 seul cas, celui donné en exemple, on n'a pas besoin de faire un programme.
C'est évident...En effet et c'est pire que crade, c'est faux. Cela fait une erreur si on parse un nombre sans partie décimale, cela accepte 7.-33, ne supporte pas la notation scientifique...
Et si par hasard on lui passe un nombre en notation américaine comme "7,333.5", cela va le résoudre en 7 + 0,333 sans erreur.
Mais ça se gère sans problème.
A savoir si c'est crade ou pas... faut s'adapter au langage.
Le java, c'est crade de base.
Mais non voyons ! Il ne parse pas un seul exemple, vous pouvez par exemple parser "1,33333" ou "8,7".Si c'est pour faire quelque chose qui ne parse que 1 seul cas, celui donné en exemple, on n'a pas besoin de faire un programme.
Essayez déjà de comprendre ce petit bout de code, il n'est pas compliqué.
Pour répondre simplement, transformer la virgule de la chaine en point, ensuite vous pourrez employer le Double.parseDouble("7.33");
Voir par exemple ici :
http://imss-www.upmf-grenoble.fr/pre...aracteres.html
String replace(char ac, char nc) Retourne une chaîne ou tous les ac ont été remplacé par des nc. S’il n’y a pas de remplacement, la chaîne elle-même est retournée.
Le dev est un véritable art.
Les données d'entrées, sûrement saisies par l'utilisateur sur une GUI, doivent être assainies AVANT tout traitement, et quelque soit le problème, une solution doit y être trouvée, au pire, via le mécanisme des exceptions.
Ici, un utilisateur saisira une valeur, non prévisible, sous la forme d'une chaine de caractère. La traitement attend un double.
L'utilisateur peut donc saisir n'importe quelle chaine, "aaazee", "7,33" ou "7.33", voir même "7;33".
Il faut traiter TOUS ces cas.
La difficulté supplémentaire est que la langue de l'OS (et donc le format décimal) n'est pas connu au moment du codage.
Suivant la "Culture" de l'OS, le séparateur décimal peut être un . (point) ou une , (virgule). Voir même selon le système, Java ayant vocation à être portable.
C'est pour cela que les manipulations de chaines à base de concatenation ou de Replace sont à proscrire. Dès le début de l'apprentissange, lors des "transtypage" de valeur textuelle en nombre.
En tout cas avec les langages qui nous en donnent les moyens.
J'ai glissé Chef !
Bien sur. Et surtout il y a des librairies qui font tout ça très bien (voir mon 1er post).
Réinventer la roue en version carrée qui explose tous les 2m, par exemple en remplaçant la virgule par un point ne marche pas non plus. Comme déjà dit, on va à un moment récupérer des nombres avec des virgules comme séparateur des milliers...
Le format des nombres, des dates, des devises et plein d'autres choses sont des sujets complexes à cause de nombreuses variations régionales. C'est pour cela qu'il y a des librairies qui couvrent tous les cas.
Mais bon, on est en train de nourrir le troll à dire des évidences à quelqu'un qui va nous répéter que sa roue carrée à lui freine mieux
On sait tout ça...Le dev est un véritable art.
Les données d'entrées, sûrement saisies par l'utilisateur sur une GUI, doivent être assainies AVANT tout traitement, et quelque soit le problème, une solution doit y être trouvée, au pire, via le mécanisme des exceptions.
Ici, un utilisateur saisira une valeur, non prévisible, sous la forme d'une chaine de caractère. La traitement attend un double.
L'utilisateur peut donc saisir n'importe quelle chaine, "aaazee", "7,33" ou "7.33", voir même "7;33".
Il faut traiter TOUS ces cas.
La difficulté supplémentaire est que la langue de l'OS (et donc le format décimal) n'est pas connu au moment du codage.
Suivant la "Culture" de l'OS, le séparateur décimal peut être un . (point) ou une , (virgule). Voir même selon le système, Java ayant vocation à être portable.
C'est pour cela que les manipulations de chaines à base de concatenation ou de Replace sont à proscrire. Dès le début de l'apprentissange, lors des "transtypage" de valeur textuelle en nombre.
En tout cas avec les langages qui nous en donnent les moyens.
Mais ce n'est pas la question.
Savoir répondre à une question est aussi un art.
Ici, la question c'est : Comment convertir un numérique (double) une chaine qui ne peut pas l'être par la fonction connue parse.Double() A CAUSE DE LA VIRGULE.
La réponse est simple et pour éviter de réinventer la roue... on utilise la fonction parse.Double()
Et le mec qui ne se prend pas pour un Troll, il peut fournir une réponse applicable ?Envoyé par pm42Mais bon, on est en train de nourrir le troll à dire des évidences à quelqu'un qui va nous répéter que sa roue carrée à lui freine mieux