![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 50 Pomógł: 1 Dołączył: 29.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Wynik : 0 + 1195.61 = 1195.61 1195.61 + -400.00 = 795.61 795.61 + -200.00 = 595.61 595.61 + -200.00 = 395.61 395.61 + -395.61 = -1.13686837722E-13 - co to za brednie ? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
Jakbyś wiedział, co to jest liczba zmiennoprzecinkowa, a zwłaszcza - jak ona działa, to byś wiedział też, dlaczego tak musi być.
Podpowiedź: wartość 1195.61 nie może być reprezentowana dokładnie w binarnym zapisie, a 395.61 ma dokładną reprezentację. Aby było śmieszniej, już przy pierwszym dodawaniu procesor matematyczny (tak, procesor matematyczny, a nie żadne PHP) musi trochę sobie pomanipulować mantysami i w efekcie wykonuje operację, której skutkiem ubocznym jest dalsza utrata precyzji: Kod 1.1956099999999999e+3 -4.0000000000000000e+2 = 7.9560999999999990e+2
-------------------- Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 22:24 |