in reply to Results depending on evaluation order

There is a difference between what is represented and what is actually being stored,

DB<11> p sprintf("%.8f", $expected); 1.98000000 DB<10> p sprintf("%.8f", $premium); 1.98000000 DB<12> p ($expected == $premium) DB<13>
When you subtract the two the difference is exposed:
DB<16> p ($expected - $premium) -2.22044604925031e-16

But it is very small. Let's lop off the unnecessary information:

DB<13> $pa = 1.98 DB<14> $pb = 1.98 DB<15> p ($pb == $pb) 1 DB<17> p ($pb - $pa) 0 DB<18> DB<22> $exp = sprintf("%.8f", $expected) DB<23> $pre = sprintf("%.8f", $premium) DB<24> p ($pre - $exp) 0

So you see if you set limits on what Perl stores you should get more accurate comparisons.

Celebrate Intellectual Diversity