| Autor | Zpráva | ||
|---|---|---|---|
| nethor Profil |
#1 · Zasláno: 29. 4. 2013, 11:51:46
Tak z tohoto jsem jelen.
Nevíte, proč mi běžný rozdíl vrací chybnou hodnotu s exponentem? $rozdil = $this->PoSleveSDph - $this->SDphSum ; echo "<b>\$this->PoSleveSDph</b><xmp>";var_dump($this->PoSleveSDph);echo "</xmp>"; echo "<b>\$this->SDphSum</b><xmp>";var_dump($this->SDphSum);echo "</xmp>"; echo "<b>\$rozdil</b><xmp>";var_dump($rozdil);echo "</xmp>"; $this->PoSleveSDph float(1876.61) $this->SDphSum float(1876.61) $rozdil float(-2.2737367544323E-13) |
||
| juriad Profil |
#2 · Zasláno: 29. 4. 2013, 12:01:38
Protože reálná čísla nejsou v počítačích reprezentována přesně: je jich mezi dvěma hodnotami nekonečně mnoho, ale počítač má jen konečnou informaci. Tady se náhodou stalo, že ty čísla byla vypočítána například v jiném pořadí a vyšlo pokaždé jiné číslo, byť se liší o zblo, tady je rozdíl
10^{-13}. Této nepřesnosti se nelze vyhnout, viz Časté potíže, zajímavosti a poučné debaty » Výsledkem výpočtu 1 - 0.9 není přesně 0.1. Jediným řešením je na konci výpočtu vhodně zaokrouhlit (třeba na dvě desetinná místa)
|
||
|
Časová prodleva: 13 let
|
|||
0