PERL NEUMI POCITAT!!!

Ondrej Koala Vacha koala na fi.muni.cz
Středa Září 27 00:35:48 CEST 2000


On Tue, 26 Sep 2000, Dominik Formanek wrote:

> jeste mi to dela dalsi zajimave veci. Mam program na vypocet vycetky a denni trzby a ten mi dnes zahlasil:
> 
> 9688.9-9480.7+2375.4-2583.6=1.81 (spravne ma byt 0)
> 
> Toto muzu kdykoli dokazat.... Mam v perlu maloobchodni pokladnu a jsem z toho trochu vedle...


$ perl -e'$a=9688.9; $b=9480.7; $c=2375.4; $d=2583.6; print $a-$b+$c-$d;'
-9.09494701772928e-13

tedy skoro nula, a nikoli 1.81 :)


podobna otazka byla probirana v perl na muni.cz:

On Mon, 25 Sep 2000, Marek Kubita wrote:

> On Sun, 24 Sep 2000, Ondrej Koala Vacha wrote:
>
> > $r =$sum_celkem1-$sum_zapl1;
> > print "sum_celkem1=$sum_celkem1 sum_zapl1=$sum_zapl1 r=$r\n";
> >
> > ...
> >
> > sum_celkem1=467694.20 sum_zapl1=467694.2 r=5.82076609134674e-11
> >
> > proc se na vypisu $sum_celkem1 a $sum_zapl1 jevi jako stejne hodnoty,
> > kdyz
> > jejich rozdil neni roven nule? Hodnoty v print jsou nejak okrouhlene?
>
> To je celkem normalni jev (popsano treba v Perl Cookbook 2.2), ze
operace
> v pohyblive radove carce jsou nepresne, napr.
>
>   DB<1> print 9.3/3.1 - 8.1/2.7
> 4.44089209850063e-16
>
> Je treba zaokrouhlovat, nebo nasobit na halere a pouzit use integer.
>


---
Ondrej Koala Vacha



Další informace o konferenci Linux