in reply to Multiply with 100 in perl

It has to do with how the computer represents floating point numbers. The computer is representing the data as a summation of various powers of 2. Since .6 cannot be represented as a summation of powers of 2, it is only a close approximation. When you truncate the value using the "%d" format specification, it gives the results you show (as illustrated by others on this thread).

The reason that perl6 (mentioned elsewhere) gets it right (IIRC), is because if it cannot exactly represent the value, it will store it as a ratio (in this case, 756/10) and use integer math (or at least exact precision math) on the values. Since I have not started to learn Perl6, this is from memory. Use at your own risk.

See also: what every programmer should know about floating point. (update: choroba beat me to it)

--MidLifeXis

Replies are listed 'Best First'.
Re^2: Multiply with 100 in perl
by Laurent_R (Canon) on Nov 12, 2015 at 10:03 UTC
    Just an example to confirm and illustrate the difference between Perl 5 and Perl 6:
    C:\Users\Laurent>perl -e "printf qq{%.20f \n}, 75.600;" 75.59999999999999400000 C:\Users\Laurent>perl6 -e "printf qq{%.20f \n}, 75.600;" 75.60000000000000000000