Forum: VB.NET |
Thema:
Rundungsfehler in VB.NET |
Von:
G. Guest (
24.08.2007 21:35) |
Hi @all,
ich habe folgendes Problem:
Der Double-Wert 1.275 soll auf 2 NKS gerundet werden. Egal welche Form der Rundung ich benutze - in jedem Fall plädiert .NET für 1.27 (normale Rundung mit 2 NKS, MidpointRounding.AwayFromZero, MidpointRounding.toEven). Die einzige Möglichkeit, auf das korrekte Ergebnis (1.28) zu kommen, ist die Konvertierung des Double-Werts mit cdec.
Habe ich irgendetwas übersehen, oder geht .NET tatsächlich so schlampig mit der mathematischen Rundung um?
Grüße aus Berlin
Schoe
Betreff |
Von |
Datum |
|
|
AW: Rundungsfehler in VB.NET
Kaufmännisch runden: Math.Round(1.275,2,MidpointRounding.AwayFromZero)<br>oder <br>Mathematisch runden: Math.Round(1.275,2)<br><br>Oder ligt das Problem wo anders? |
|
|
|
|
|
Bernhard
Grojer
|
25.08.2007 12:16 |
|
|
AW: AW: Rundungsfehler in VB.NET
Hi,<br><br>stimmt - das Problem liegt woanders ;o)<br>Bei der mathematischen Rundung (und auch bei der kaufmännischen) müsste er ja eigentlich auf 1.28 kommen - tut er aber nicht :o(<br><br>Dim Wert as... |
|
|
|
|
|
G.
Guest
|
25.08.2007 20:01 |
|
|
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...
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!