On Fri, 20 Oct 2017 07:34:04 -0700, victor.a...@derpymail.org wrote:
> How to reproduce
> ----------------
> 
> perl6 -e 'my ($a, $b) = (0.777777777777777777777,
> 0.7777777777777777777771); say $a <=> $b, " ", Num($a) <=> Num($b)'
> 
> Expected behavior
> -----------------
> 
> Prints `Less Less`, or `Less Same`, depending on how rounding is done.
> 
> Actual behavior
> ---------------
> 
> Prints `Less More`. This seems inconsistent: $a is strictly smaller
> than $b, yet Num($a) is strictly larger than Num($b).
> 
> Version information
> -------------------
> 
> This is Rakudo version 2017.09 built on MoarVM version 2017.09.1
> implementing Perl 6.c.
> 
> This may be related to https://rt.perl.org/Public/Bug/Display.html?id=132313


This appears to be not a bug but simply the goodness of floating point math. I 
get the same result in C:

    #include <stdio.h>
    int main(void) {
        puts( 777777777777777777777.0L/1000000000000000000000.0L
          >  7777777777777777777771.0L/10000000000000000000000.0L
          ? "More" : "Less or Same");
        return 0;
    }

    // OUTPUT: More

Reply via email to