On Sun, Oct 31, 2021 at 10:10 PM ToddAndMargo via perl6-users <
perl6-us...@perl.org> wrote:

> On 10/31/21 01:43, Shlomi Fish wrote:
>
> >
> >> ("" ~ sqrt(2)).comb().grep(* ne ".").map(+*)
> > (1 4 1 4 2 1 3 5 6 2 3 7 3 0 9 5 1)
>
> Cool!
>
> my Int @x = ("" ~ sqrt(2)).comb().grep(* ne ".").map(+*)
> [1 4 1 4 2 1 3 5 6 2 3 7 3 0 9 5 1]
>
> Is there a way to set how many digits I get?
>

In perl we can do:
C:\>perl -e "@x = split(/\.|/, sqrt(2)); print for @x";
14142135623731
C:\>perl -e "@x = split(/\.|/, sprintf('%.7g', sqrt(2))); print for @x";
1414214
C:\>perl -e "@x = split(/\.|/, sprintf('%.8g', sqrt(2))); print for @x";
14142136

But the same split() expression is unacceptable to Raku.
Closest I could get with that approach:

C:\>raku -e "say split(/\.|''/, sqrt 2);"
( 1  4 1 4 2 1 3 5 6 2 3 7 3 0 9 5 1 )

C:\_32>raku -e "say split(/\.|''/, sprintf('%.5g', sqrt 2));"
( 1  4 1 4 2 )

It's that additional space between the first 2 digits that has me beat.
(I don't know raku at all.)

Cheers,
Rob

Reply via email to