709.25 + 0.01 = 709.2599999999
hello,
az alabbi kod futtatasa utan a cimben emlitett ertektol egy ezredmilliomodot vesztek. miert?
$i=0;
while ($i<999)
{
print "$i*999=".($i*999)."<br>\n";
$i=$i+0.01;
}
?>
koszi,
■ az alabbi kod futtatasa utan a cimben emlitett ertektol egy ezredmilliomodot vesztek. miert?
$i=0;
while ($i<999)
{
print "$i*999=".($i*999)."<br>\n";
$i=$i+0.01;
}
?>
koszi,
lebegopontos szamabrazolas
Ez a lebegopontos szamabrazolas sajatossagaibol fakado hiba. A szamitogepben altalaban ilyen formaban kerulnek tarolasra a tort szamok.
Felho
Kettes számrendszer
Mint Felhő jelezte, a probléma ott jelentkezik, hogy a számítógép végtelen kettedes törtként tárolja a 0.01-et. Sajnos a memóriája véges, ezért levágja egy részét, és nem pontosan 0.01-et tárol. Próbáld ki, hogy ha 0.125-tel csinálod ugyanezt, akkor nem lesz gondod, ez ugyanis 2^(-3).
A probléma másik oldala az oktatás. Hogy jut el valaki addig, hogy ciklust írjon, hogy ezt ne tudja? (Figyelem, nem flame -- nem a delikvenst szidom, az oktatóit.)
Autodidakta módon tanul
teljes mertekben igazatok van
Nekem nem adja össsze 32,32+5,3
A php-m miért nem akarja összeadni az így felvitt számot?
32,32+5,3, helyette 37 egészet fogok kapni és ami utána van azt meg levágja :(
nah
amugy teljes mértékben megértem a többieket hogy nem írtak semmit
a php 24 óra alatt kb első órájában levan írva
amugy meg:
32.32+5.3