in reply to Funny addition behaviour

The problem is that there is no exact way to represent 33.3 in floating point variable which uses base 2. Perl (and any other computer language) has to use approximations, which come close, but aren't exact.

Floating point numbers at the limit of precision are funny - order of arithmetic operations definitely makes a difference, and errors grow as you perform more consecutive operations.

Which is why, in any serious book devoted to mathematical simulation (which involves numerous floating point operations) you will find, not equality comparisons, but "error bar" comparions: abs($val-$expected)<0.0001 vs $val == $expected (adjust the 0.0001 value as required/possible).