Convert string to double [Résolu]

Messages postés
3
Date d'inscription
vendredi 17 mars 2006
Dernière intervention
28 août 2006
- 28 août 2006 à 11:37 - Dernière réponse :
Messages postés
3
Date d'inscription
vendredi 17 mars 2006
Dernière intervention
28 août 2006
- 28 août 2006 à 13:10
Bonjour tout le monde, chuis sûr que certains vont me prendre pour un nul pour cette question, mais testez et vous allez voir!

alors j'essaye de convertir un string en double

string n = "1.000";
deux méthodes :
    - double d = Convert.ToDouble(n) -> lance une exception FormatException
    - double d = Double.Parse(n) -> idem

Quelqu'un peut m'expliquer ce qui ne vas pas?

PS: mon string doit absolument avoir la forme de "1.000"

Merci d'avance
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
28 août 2006 à 11:53
3
Merci
Salut,
C'est sûrement parce que sur ton système, le séparateur est une virugle (,) et pas un point (.)
Du coup ça plante quand il parse le string...
Tu peux utiliser une surcharge de ces méthodes pour spécifier quelle culture utiliser.

VC# forever

Merci cs_Bidou 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_Bidou
Meilleure réponse
Messages postés
1108
Date d'inscription
mercredi 15 juin 2011
Dernière intervention
10 juillet 2018
28 août 2006 à 12:25
3
Merci
En effet, j'ai déjà eu le même genre de pb avec SQL Server.
 
Tout dépend si tu as tes chaines de caractère en dur ou si elle sont générées.
Dans le cas où elles sont générées, ça ne pose pas de pb, ça mettra un point en En et une virgule en Fr, par ex. Par contre, si tu joues avec les paramètres régionaux sur une même machine entre 2 exécutions, là ça se complique.
Dans le cas où tu mets les chaine en dur, utilise les fichiers de resources (que tu dois déjà utiliser pour traduire ton appli).

.

Merci fregolo52 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de fregolo52
Meilleure réponse
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
28 août 2006 à 12:28
3
Merci
C'est un problème assez connu... le mieux je pense, c'est de setter dans ce cas une culture pour le programme, et pas prendre celle du système sur lequel s'exécute le programme (comportement par défaut).

Donc tu peux mettre ceci :
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("fr-CH");
(pour Français Suisse )

VC# forever

Merci cs_Bidou 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_Bidou
Meilleure réponse
Messages postés
3
Date d'inscription
vendredi 17 mars 2006
Dernière intervention
28 août 2006
28 août 2006 à 13:10
3
Merci
Merci bidou, j'opetrais pour "en-EN"

Merci aniscript 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de aniscript
Messages postés
3
Date d'inscription
vendredi 17 mars 2006
Dernière intervention
28 août 2006
28 août 2006 à 12:06
0
Merci
Salut bidou, merci pour ta réponse.

Effectivement en remplaçant le poin par une virgule ça résout le problème.

J'ai encore une dernière question, quelle culture utiliser pour avoir un cast tout le temps?
l'appli que je développe sera utilisé sur des PCs windows du monde entier.

Merci encore
Commenter la réponse de aniscript

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.