Thread Kaufmännisch korrekt runden (67 answers)
Opened by bianca at 2009-12-11 07:14

topeg
 2009-12-13 14:18
#129294 #129294
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
"8e-009" das ist die Float nach Sting Konvertierung von Perl willst du was anderes musst du "sprintf" oder ähnliches nutzen.
Da taucht irgendwo wieder das Fließkommaproblem auf.
Es scheint einen Unterschied zu machen ob man eine zahl mit:
Code: (dl )
"8e-9"
erzeugt oder mit
Code: (dl )
"0.000000008"

Mal kurz getestet:
Code: (dl )
1
2
3
4
5
6
1.505162-1505162e-6=-2.22044604925031e-16
1.510463-1510463e-6=2.22044604925031e-16
1.520787-1520787e-6=-2.22044604925031e-16
1.526088-1526088e-6=2.22044604925031e-16
1.536412-1536412e-6=-2.22044604925031e-16
1.541713-1541713e-6=2.22044604925031e-16

Ich habe da eine auskommetierte "sprintf"-Zeile, die sollte das Problem beheben, da es die "kaputten" Stellen abschneidet. (dann kann man sich auch das "+0" beim "return" sparen.)

Edit:
Wenn man bei meinem kleinen Test genauer hinschaut sieht man, dass die Differenz mal plus und mal minus ist. Das bedeutet, dass der Fehler mal in der Exponentdarstellung auftaucht und mal bei der Kommadarstellung. Das wiederum heißt man sollte sich auf eine Art des Erzeugens festlegen. Glücklicherweise kann man das mit "sprintf" hin bekommen.
Last edited: 2009-12-13 14:24:29 +0100 (CET)

View full thread Kaufmännisch korrekt runden