habe ziemlich lange einen vermeintlichen Bug in meinem Code gesucht, bis ich feststellte, das PB 3.94 doch tatsächlich 100 * 0.6 = 60.000004 rechnet!
Code: Alles auswählen
Debug 100 * 0.6
Code: Alles auswählen
Debug 100 * 0.6
Code: Alles auswählen
Debug 100.0*0.6 - 60
Code: Alles auswählen
Debug Round(100.0*0.6,1)
Code: Alles auswählen
a.f = 100 * 0.6
Debug a
b.l = a
Debug b
Schau Dir mal die Beschreibung der Funktion Round() an!Gimbly hat geschrieben:Das ist überhaupt nicht normal.
Probier mal folgendes:PB errechnet dann 61!Code: Alles auswählen
Debug Round(100.0*0.6,1)
Das gibts in keiner anderen Programmiersprache.
Code: Alles auswählen
Result.f = Round(Number.f, Mode)
Naja, mit einer "intelligenten" Runden-Funktion ist das nicht vergleichbar! ... entspricht eher der Int() Funktion!remi_meier hat geschrieben:Doch das ist normal, aber benutz nicht den Round() Befehl, der macht nicht,
was er sagt! Weise den Wert einfach einer Long-Variable zu und er wird
richtig gerundet:Code: Alles auswählen
a.f = 100 * 0.6 Debug a b.l = a Debug b
Code: Alles auswählen
a.f = 3.5
Debug a
b.l = a
Debug b
Was in der Hilfe steht ist mir schon klar.helpy hat geschrieben:Wenn Mode=1, dann wird aufgerundet!
Wenn Mode=0, dann wird abgerundet!
Seh' ich nicht so!Gimbly hat geschrieben:Was in der Hilfe steht ist mir schon klar.helpy hat geschrieben:Wenn Mode=1, dann wird aufgerundet!
Wenn Mode=0, dann wird abgerundet!
100.0 * 0.6 ergibt 60, und 60 aufgerundet ergibt immer noch 60 und nicht 61.
Das ist ganz klar ein Bug!
Code: Alles auswählen
a.f = 60.123450
Debug a ; ergibt 60.123451
Wow!!!remi_meier hat geschrieben:Wieso?Code: Alles auswählen
a.f = 3.5 Debug a b.l = a Debug b