Bonjour,
Je suis vraiment débutante en C#,
J'ai une variable partieDec déclarer double,
je veux faire un replace si elle contient une virgule au lieu du point comme décimale.
comment je dois faire ?
partieDec.Replace(",", ".")
Merci
Bonjour,
Je suis vraiment débutante en C#,
J'ai une variable partieDec déclarer double,
je veux faire un replace si elle contient une virgule au lieu du point comme décimale.
comment je dois faire ?
partieDec.Replace(",", ".")
Merci
un double est un numéric donc pas de replace.
Plusieurs solution.
-Tu changes la Culture de ton PC
-Tu changes la CultureInfo de ton programme
-Tu fais maValue.ToString(CultureInfo)
Rien ne dit qu'il s'agisse d'une application Desktop.
Tu es sur quel type d'application?
Il paraîtrait en effet logique de contraindre l'utilisateur à saisir un numérique en fonction d'une "culture" (je te laisserai regarder sur la MSDN comment ça se décline dans le monde .net). En effet, un américain (par exemple) n'utilisera pas la virgule de la même qu'on l'utilise en France, donc un "replace" ne semble pas adapté à ton problème... s'il s'agit bien d'un problème de saisie utilisateur!
Bonjour,
Oui, à la base c'est un problème d'utilisateur et tout à été fait.
Mais, dans ma table mes données qui sont présente depuis longtemps
contienne une virgule au lieu d'un point.
Dans mon programme c,est une chaine de caratère qui contient
"Longueur 2.25"
on extrait les derniers caratères dans une variable double.
Pour moi le plus simple est de faire un replace dans la programme.
Merci
decimal dTest = 0;
string sString = "";
sString = dTest.ToString();
sString = sString.Replace(",",".");
dTest = decimal.Parse(sString);
Bonjour,
Je suis vraiment débutante en C#,Je te conseillerai de suivre les avis des développeurs expérimentés qui t'ont conseilléPour moi le plus simple est de faire un replace dans la programmeEn effet, la signification des '.' et des ',' n'est pas la même partout.
Si j'ai bien compris, tu as une chaine sous la forme "Longueur 2.25".
Comme tu le vois, les deux solutions ci dessus sont plus concises, et surtout plus claires. Le jour où le format en DB changera, le replace() restera et deviendra du code legacy. Au fur et à mesure, ça devient incompréhensible et personne ne peut y toucher.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 string chaineDeLaBase = "Longueur 2.25"; string maLongueurEnChaine = chaineDeLaBase.Split(" ").LastOrDefault(); // Ici tu voulais faire quelque chose comme ça // maLongueurEnChaine.Replace(".", ","); // double maLongueur = double.Parse(maLongueurEnChaine); //Voici ce qu'il est conseillé de faire double maLongueur = double.Parse(maLongueurEnChaine, NumberStyles.AllowDecimalPoint); // Autorise juste les points pour séparer les décimales double maLongueur2 = double.Parse(maLongueurEnChaine, CultureInfo.GetCultureInfo("en-US")); // Parse en fonction de la culture ciblée
Comme on dit, keep it simple![]()
Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/
Partager