Bonjour,
Comment récupérer une valeur double d'un string.
Par exemple:
Je veux avoir comme résultatCode:String titi="nj12.3iuj";
Code:Double toto = 12.3;
Version imprimable
Bonjour,
Comment récupérer une valeur double d'un string.
Par exemple:
Je veux avoir comme résultatCode:String titi="nj12.3iuj";
Code:Double toto = 12.3;
Pour commencer il faut garder seulement les chiffres et le point décimal :
Et ensuite utiliser Double.Parse pour convertir la chaine en double :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 String titi="nj12.3iuj"; StringBuilder sb = new StringBuilder(titi); int i = 0; while(i < sb.Length) { if (!Char.IsDigit(sb[i]) && sb[i] != '.') { sb.Remove(i, 1); continue; } i++; } titi = sb.ToString();
(il faut préciser d'utiliser la culture invariante, parce que sinon par défaut ça utiliserait la culture courante, et en français le séparateur décimal est la virgule, pas le point)Code:Double toto = Double.Parse(titi, CultureInfo.InvariantCulture);
Bonjour,
Merci pour ta réponse.
Enfaite j''ai utilisé ton idée donnée un autre code qui sélectionne des éléments d'une base de donnée et les traites mais lors de l'exécution je reçois une erreurJ’ai essayé de changer le type de cultureInfo mais ca marche pas.Citation:
Input string was not in correct format
Voici mon code:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { byte[] comBuffer = new byte[255]; serialPort.Read(comBuffer, 0, comBuffer.Length); string s1 = Encoding.ASCII.GetString(comBuffer); st1 = new StringBuilder(s1, 50); ArrayList trame1 = new ArrayList(50); trame1.Add(st1); DisplayData2(st1.ToString().Substring(3, 5)); try { StringBuilder sb = new StringBuilder(st1.ToString().Substring(3, 5)); int i = 0; while (i < sb.Length) { if (!Char.IsDigit(sb[i]) && sb[i] != '.') { sb.Remove(i, 1); continue; } i++; } string ad = sb.ToString(); double d1 = Convert.ToDouble(ad, new CultureInfo("en-US")); // double d1 = Convert.ToDouble(ad, new CultureInfo("fr-FR")); Program.connexion.Open(); SqlCommand myCommand = new SqlCommand("insert into Oven(Time_Level_1) values('" + d1.ToString() + "')", Program.connexion); myCommand.ExecuteReader(); } catch (Exception z) { MessageBox.Show(z.ToString()); } Program.connexion.Close(); }
Plus court:
Edit: Ah bah oué, mais ca sert a rien de faire un double pour refaire un tostring() derrière :aie:Code:double myDouble = Double.Parse(String.Concat(titi.Where(c=>Char.IsDigit(c) || c=='.')),CultureInfo.InvariantCulture);
Utilise plutôt une requête parametrée.