in reply to Math::round not rounding correctly

Asides from the general comment on floating-point arithmetic calculation, you should know that the international IEEE standard for rounding numbers is more complicated that what you probably expect. If you want to round a number with one decimal place to an integer, numbers whose decimal place is 5 will be rounded up or down, depending on whether the previous digit is odd or even. This is the international standard, and this is what the standard C library implements for the round function, and this is what Perl is also doing, presumably because it is based on the C library. The rational for that is that if you always round up numbers with one decimal place equal to 5, you get a bias upward in sums of large number of numbers. So that a number with one decimal place equal to 5 is sometimes rounded up and sometimes rounded down.

Replies are listed 'Best First'.
Re^2: Math::round not rounding correctly
by bulrush (Scribe) on Dec 23, 2014 at 20:06 UTC
    Thank you, but if you look at my added test programs in Edit 2, you will see the number actually is "3461.5000", and it should be rounded to "3462".