in reply to Re: perl6 rational number problem
in thread perl6 rational number problem

Yes
I need to fix my question.
exponentiation not in range of rational number(something like 2.sqrt() , and there have no exponentiation base stored in perl6 and most of program language, maybe there have moudle handle that)
this is my question
ration number on the common operator
Addition 、 Subtraction 、Multiplication 、 Division 、 Modulo
online run
my Rat @ex01 = 1.0 , * + 0.9999 ... Inf; my Rat @ex02 = 1.0 , * - 0.9999 ... Inf; my Rat @ex03 = 1.0 , * * 0.9999 ... Inf; my Rat @ex04 = 1.0 , * / 0.9999 ... Inf; my Rat @ex05 = 1.0 , * % 0.9999 ... Inf; my %ex = :add(@ex01), :substrat(@ex02), :mult(@ex03), div(@ex04), mod(@ex05); try { for < add substrat mult div mod > -> $op { for 1 .. 20 -> $count { "$op $count".say; (%ex{$op})[$count] } } }
this try will fail in Multiplication and Division.
why?

Replies are listed 'Best First'.
Re^3: perl6 rational number problem
by Anonymous Monk on Nov 21, 2017 at 18:07 UTC
    You need FatRats.
    > my @a = 1.0, * * 0.9999... *; [...] > my @b = FatRat(1.0), * * 0.9999... *; [...] > say $_, ' ', $_.WHAT for @a[^10]; 1 (Rat) 0.9999 (Rat) 0.99980001 (Rat) 0.999700029999 (Rat) 0.9996000599960001 (Rat) 0.99950009999 (Num) 0.999400149980001 (Num) 0.999300209965003 (Num) 0.999200279944007 (Num) 0.999100359916013 (Num) > say $_, ' ', $_.WHAT for @b[^10]; 1 (FatRat) 0.9999 (FatRat) 0.99980001 (FatRat) 0.999700029999 (FatRat) 0.9996000599960001 (FatRat) 0.99950009999000049999 (FatRat) 0.999400149980001499940001 (FatRat) 0.9993002099650034997900069999 (FatRat) 0.99920027994400699944002799920001 (FatRat) 0.999100359916012598740083996400089999 (FatRat)