in reply to Strange concerning floats

This happens because computers do not store numbers internally in base-10, they store it in binary (base-2). Math operations require the computer to convert the operands to binary, do the math, and then convert back. So you may occasionally find some operations that give you slightly unexpected results like this. It's not a problem with the implementation, it's a problem with the numeric precision you're using (either the data type or the formatting of the output). In Perl you don't have much control over the data type (though the use of Math::BigFloat might help, but that's probably overkill), but you do have control over the formatting.