Anfängerproblem: Zahlenconversion

Gast #2267661
Lesenswert?

Hallo, ich probiere gerade ein Tutorial aus: Umwandlung von Text aus 
Textbox in ein Zahl.

Es gehört zu einem Taschenrechner-Tutorial; bei mir geht's nicht.

decimal dec = Convert.ToDecimal(textBox1.Tag) +
              Convert.ToDecimal(textBox1.Text);

führt zu:
3 + 6 = 9 // ok.
3 + 6,1 = 6,4 // ?


Hab hier VStudio C# 2010 Express.
#2279903
Lesenswert?

Samuel K. schrieb:
> Oder das Komma durch einen Punkt ersetzen:
>
>
1
decimal dec = Convert.ToDecimal(textBox1.Tag.Replace(',','.')) +
2
> Convert.ToDecimal(textBox1.Text.Replace(',','.'));


Das Thema ist ein konstantes Ärgernis.
Den  natürlich kannst du nicht verhindern, dass irgendein BWL 
Schleuberger wahlweise Tausenderpunkte bzw. Tausenderkomma eingibt.
#2280016
Lesenswert?

(ich kenn das eigentlich nur so, dass die DEFAULT funktion die aus text 
eine zahl macht, die Ländereinstellung berücksichtigt, also wenn 
weindows auf DE eingestellt ist mit "," funktionierten müsste, und bei 
ENU mit ".")
aber egal..



>Schleuberger wahlweise Tausenderpunkte bzw. Tausenderkomma eingibt.

deshalb macht man ja auch  editfelder mit "Maske" die nur das eingeben 
von z.b. Datum oder zahlen im richtigen Format zulassen...

wenn man Formeln eingeben kann, wirds schwieriger,
bekommt man halt eine Fehlermeldung ala Excel..
ist ja auch kein problem
#2281225
Lesenswert?

Karl Heinz Buchegger schrieb:
> Den  natürlich kannst du nicht verhindern, dass irgendein BWL
> Schleuberger wahlweise Tausenderpunkte bzw. Tausenderkomma eingibt.

Lässt sich abfragen:
1
decimal conv(string s)
2
{
3
   if(s.IndexOf('.') < s.IndexOf(','))             //Punkt vor Komma -> Punkt ^= Tausender
4
       s = s.Replace(".","").Replace(',', '.'); //Tausender entfernen, Komma durch Punkt ersetzen
5
   s = s.Replace(",","");                       //Tausender entfernen
6
   return Convert.ToDecimal(s);
7
}

Ich finde eine gute Software sollte alle Möglichkeiten behandlen, sodass 
der Anwender nie plötzlich eine Fehlermeldung erhält - nur ist das nicht 
immer leicht zu bewerkstelligen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren