note p6steve <p>hi rob, from the <a href="https://docs.raku.org/routine/==">docs</a> we have:</p> <code>Coerces both arguments to Numeric (if necessary); returns True if they are equal.</code> <code> > my \$x = 1/10; #0.1 > \$x.^name; #Rat > my \$y = 3602879701896397/36028797018963968; #0.100000000000000006 > \$y.^name; #Rat > \$x == \$y #False (no coercion necessary) > \$x == 0.1 #True (no coercion necessary) > \$y == 0.1 #False (no coercion necessary) so comparing without coercion works as you expect > 0.1e0.^name; #Num > \$x == 0.1e0 #True (coerces \$x to Num, then compares) > \$y == 0.1e0 #True (coerces \$y to Num, then compares) coercion from Rat to Num can result in loss of precision > say \$y.nude #(3602879701896397 36028797018963968) > say \$y.Num #0.1 coercing this particular Rat to a Num collapses it to 0.1 IIRC the limit of Rat precision is e-14 ish (it gets lumpy), so in the general case it is fair to round away your ...00006 to 0 thus the Num 0.1 maps to both of these Rat options </code> <p>your python example does much the same...</p> <code>print (Fraction(3602879701896397, 36028797018963968) == 0.1); # True</code> <p> 11137153 11137168