| |
|
|
| KompilierenMarkierenSeparierenDer Code zeigt leider nicht Ist gleich an, aber er müsste.
Durch die Decimals-Zeile hebe ich hervor warum das Print nicht corsa wird. |
|
|
| |
|
|
|
RGH | Hallo David,
das Print X!,Y!,A!,B! zeigt ja recht deutlich, warum Y! eben immer noch ungleich B! ist. Bei Floats (= Double in anderen Sprachen) sind eben nicht alle Werte 100%ig exakt darzustellen. Die Genauigkeit ist halt auf 15 Stellen begrenzt. Durch die mehrmalige Addition mit 0.1 summiert sich bei Y! der Fehler auf eine Ungenauigkeit in der 16. Stelle, sodaß das Resultat eben nicht exakt -20 ist, sondern eben -20.000000000000035. Bei Fließkommazahlen sollte man daher nie auf Gleichheit prüfen, sondern immer auf >=, <=, etc. Das trifft im übrigen auf alle Programmiersprachen zu, die im Normal keine BCD-Dartstellung von Fließkommazahlen bieten. (Eine Ausnahme war PowerBasic per DOS, welches Fließkommazahlen im BCD-Format darstellte.)
Saluto Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 05.05.2006 ▲ |
|
|
|
|
| Jut!
Also mit round bzw. mit int(f!*1x) gerundet vergleichen, damit komm ich klar. |
|
|
| |
|
|