Untitled

Run Settings
LanguageRaku
Language Version
Run Command
sub numstr-to-fatrat(Str $str --> FatRat) { # Match the pattern: optional sign, digits, optional decimal part, exponent if $str ~~ /^ (<[+-]>?) (\d+) [\. (\d+)]? [<[eE]> (<[+-]>?) (\d+) ]? $/ { my $sign = $0.Str eq '-' ?? -1 !! 1; my $integer-part = $1.Str; my $fractional-part = $2.Str // ''; my $exp-sign = $3.Str // '+'; my $exp-value = $4.Str // '0'; # Combine integer and fractional parts into a single integer my $mantissa = $integer-part ~ $fractional-part; my $exponent = $exp-value.Int * ($exp-sign eq '-' ?? -1 !! 1); $exponent -= $fractional-part.chars; # Construct FatRat my $numerator = $sign * $mantissa.Int; my $denominator = 10 ** -$exponent; return $exponent >= 0 ?? FatRat.new($numerator * 10 ** $exponent) !! FatRat.new($numerator, $denominator); } else { die "Invalid number format: $str"; } } # Example usage: my $numstr = "1.6605402e-27"; my $fatrat = numstr-to-fatrat($numstr); say $fatrat.nude;
Editor Settings
Theme
Key bindings
Full width
Lines