note
Anonymous Monk
As the articles that you've already been pointed to say, computers use a float-<u>binary</u> representation. The number <tt>1/10</tt> does not have an exact representation in base-2 floats, much as <tt>1/3</tt> does not have an exact representation in a base-10 float. Computers can handle this problem by using decimal (BCD = Binary-Coded Decimal) arithmetic, but Perl does not directly expose this type. One pragmatic solution to your problem might be to count using <i>integers,</i> where the integer is the desired number multiplied by 100. Then, each time, calculate the float by casting the integer to a float and dividing it by 100. Because this is done each time, errors do not accumulate. Many database systems employ a variation of this "scaled integer" strategy to handle their <tt>currency</tt> data type.
1212528
1212528
9