Afrondings fout?

Status
Niet open voor verdere reacties.

shokora

Nieuwe gebruiker
Lid geworden
9 dec 2007
Berichten
1
Ik ben bezig met een application in Perl en ik kwam een heel vervelend bugje tegen. Het probleem is dat ik hierdoor niet verder kan omdat het in een vitaal deel van mijn core zit.
Zoals je kunt zien gaat alles goed tot hij bij 1.0 aan komt:

Code:
for($i=-2;$i<=5;$i+=0.1)
{
    print $i."\n";
}

OUTPUT:

-2
-1.9
-1.8
-1.7
-1.6
-1.5
-1.4
-1.3
-1.2
-1.1
-0.999999999999999
-0.899999999999999
-0.799999999999999
-0.699999999999999
-0.599999999999999
-0.499999999999999
-0.399999999999999
-0.299999999999999
-0.199999999999999
-0.0999999999999994
6.38378239159465e-016
0.100000000000001
0.200000000000001
0.300000000000001
0.400000000000001
.....
 
met de sprintf functie kun je getallen goed afronden, dit is wat je nodig hebt.
de afrondingsfout komt door het binaire systeem dat computers gebruiken en het is niet ongewoon dat je het tegen komt.

hieronder is de locatie van de documentatie van sprintf.
http://perldoc.perl.org/functions/sprintf.html
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan