Autor Zpráva
nethor
Profil
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>";
vypíše
$this->PoSleveSDph
float(1876.61)
$this->SDphSum
float(1876.61)
$rozdil
float(-2.2737367544323E-13)
juriad
Profil
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)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: