OVH Cloud OVH Cloud

convert.toInt64

4 réponses
Avatar
Bonjour,
je n'arrive pas à convertir une string du type "12.20" en long.
le système me renvoi une exception format.
J'ai essayé Convert.toInt64("12.20") et Convert.toInt64("12,20") et meme
erreur par contre avec "12" comme valeur ça fonctionne.
Comment puis-je faire ?

merci

4 réponses

Avatar
Patrice Manac'h
Bonjour,

si votre système est français, le séparateur est la virgule et pas le point.
Pour forcer un style particulier (format à l'anglaise ici), utilisez la
surcharge Convert.ToInt64 (Object, IFormatProvider).

Cordialement,

Patrice Manac'h
MCS France

<r> a écrit dans le message de news:
uqq%
Bonjour,
je n'arrive pas à convertir une string du type "12.20" en long.
le système me renvoi une exception format.
J'ai essayé Convert.toInt64("12.20") et Convert.toInt64("12,20") et meme
erreur par contre avec "12" comme valeur ça fonctionne.
Comment puis-je faire ?

merci




Avatar
Sylvain Lafontaine
Le type « long » ne possède pas de décimal, alors j'imagine que vous devez
d'abord passer par un type flotant et tronquer ou arrondir ensuite le
résultat. Peut-être que Int64.Parse() peut également donner un meilleur
résultat mais je n'ai pas essayé.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF


<r> wrote in message news:uqq%
Bonjour,
je n'arrive pas à convertir une string du type "12.20" en long.
le système me renvoi une exception format.
J'ai essayé Convert.toInt64("12.20") et Convert.toInt64("12,20") et meme
erreur par contre avec "12" comme valeur ça fonctionne.
Comment puis-je faire ?

merci




Avatar
Simon Mourier [SoftFluent]
Convert.ToInt64(string) est branché fort logiquement sur Int64.Parse(string)
qui attend un format de Int64.
Il faut donc convertir d'abord en flottant (Double, Single, ou Decimal) en
effet.

donc:

long l = Convert.ToInt64(Convert.ToDouble("12,20"));
ou
long l = Convert.ToInt64(Convert.ToDouble("12.20"));

en fonction de la culture, ou

long l = Convert.ToInt64(Convert.ToDouble("12.20",
System.Globalization.CultureInfo.InvariantCulture));

si on veut forcer une culture (ici Invariant)
Simon.
www.softfluent.com


"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news:
Le type « long » ne possède pas de décimal, alors j'imagine que vous devez
d'abord passer par un type flotant et tronquer ou arrondir ensuite le
résultat. Peut-être que Int64.Parse() peut également donner un meilleur
résultat mais je n'ai pas essayé.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF


<r> wrote in message news:uqq%
Bonjour,
je n'arrive pas à convertir une string du type "12.20" en long.
le système me renvoi une exception format.
J'ai essayé Convert.toInt64("12.20") et Convert.toInt64("12,20") et meme
erreur par contre avec "12" comme valeur ça fonctionne.
Comment puis-je faire ?

merci








Avatar
Sylvain Lafontaine
Une autre solution serait tout simplement de tronquer la chaîne de
caractères avant de la parser.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF


"Simon Mourier [SoftFluent]" wrote in message
news:
Convert.ToInt64(string) est branché fort logiquement sur
Int64.Parse(string) qui attend un format de Int64.
Il faut donc convertir d'abord en flottant (Double, Single, ou Decimal) en
effet.

donc:

long l = Convert.ToInt64(Convert.ToDouble("12,20"));
ou
long l = Convert.ToInt64(Convert.ToDouble("12.20"));

en fonction de la culture, ou

long l = Convert.ToInt64(Convert.ToDouble("12.20",
System.Globalization.CultureInfo.InvariantCulture));

si on veut forcer une culture (ici Invariant)
Simon.
www.softfluent.com


"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news:
Le type « long » ne possède pas de décimal, alors j'imagine que vous
devez d'abord passer par un type flotant et tronquer ou arrondir ensuite
le résultat. Peut-être que Int64.Parse() peut également donner un
meilleur résultat mais je n'ai pas essayé.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF


<r> wrote in message news:uqq%
Bonjour,
je n'arrive pas à convertir une string du type "12.20" en long.
le système me renvoi une exception format.
J'ai essayé Convert.toInt64("12.20") et Convert.toInt64("12,20") et meme
erreur par contre avec "12" comme valeur ça fonctionne.
Comment puis-je faire ?

merci