in reply to Behaviour of int() unexpected

What Every Programmer Should Know About Floating-Point Arithmetic: https://floating-point-gui.de/

8.95 is stored as 8.94999980926513671875 and int rounds down.

Replies are listed 'Best First'.
Re^2: Behaviour of int() unexpected
by ikegami (Patriarch) on Mar 11, 2025 at 00:19 UTC

    Perl normally uses double for floating point numbers, even on 32-bit machines. You can find out what your perl uses as follows:

    $ perl -V:nvtype nvtype='double';

    A double is an IEEE double-precision number on a desktop computer.

    As such, 8.95 is actually stored as 0x1.1E66666666666 * 2^3 = 8.949999999999999289457264239899814128875732421875.