Forum: VB.NET |
Thema:
AW: AW: Rundungsfehler in VB.NET |
Von:
G. Guest (
25.08.2007 20:01) |
Hi,
stimmt - das Problem liegt woanders ;o)
Bei der mathematischen Rundung (und auch bei der kaufmännischen) müsste er ja eigentlich auf 1.28 kommen - tut er aber nicht :o(
Dim Wert as double
Wert=1.275
math.round(Wert,2,MidPointRounding.AwayFromZero)
ergibt 1.27
math.round(cdec(Wert),2,MidPointRounding.AwayFromZero)
ergibt jedoch das korrekte Ergebnis 1.28
Ich bin mir nur nicht sicher, dass ich nicht irgend etwas übersehen habe - ich kann mir eigentlich nicht vorstellen, dass ich alle Double-Variablen zu Decimals machen muß, damit mein Programm rundungssicher ist :o(
Viele Grüße
Schoe
Betreff |
Von |
Datum |
|
|
AW: AW: AW: Rundungsfehler in VB.NET
Hallo,<br><br>das ist echt nicht lustig. Irgendwas is da richtig faul an der Funktion. Hier mal ein paar Tests:<br><br>Decimal-Wert gerundet auf 2 Stellen. Das Ergebnis ist für ToEven nicht korrekt, wenn ich... |
|
|
|
|
|
Thomas
Hauser
|
26.08.2007 11:59 |
|
|
AW: AW: AW: AW: Rundungsfehler in VB.NET
Vermutung: double speichert werte als flieskommazahl (float) ... damit wär beim Runden 1.275 intern als 1.27499..... <br>Dadurch dürfte beim "Abschneiden" Probleme entstehen :D<br><br>Seltsam auf jeden Fall... |
|
|
|
|
|
Bernhard
Grojer
|
26.08.2007 13:48 |
|
|
AW: AW: AW: AW: Rundungsfehler in VB.NET
Hallo Thomas,<br><br>und ich dachte schon, ich stehe völlig im Wald ;o)<br><br>Dann wird mir wohl auch nichts anderes übrig bleiben, als meine eigenen Rundungsroutinen zu schreiben - alles andere ist mir dann... |
|
|
|
|
|
|
26.08.2007 14:21 |
|
|
AW: AW: AW: AW: AW: Rundungsfehler in VB.NET
Hallo,<br><br>jetzt habe ich eine akzeptable Lösung. Das wäre dann toString Methode von double oder decimal.<br>Formatstring: "Fd", wobei d die Anzahl der Nachkommastellen ist.<br><br>Hier ein paar Tests, die... |
|
|
|
|
|
Thomas
Hauser
|
26.08.2007 14:53 |
|
|
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!