is Cool does Rational[Int, uint64]
Rat
对象将有理数存储为分子和分母对。带点但不带指数的数字文字会生成 Rat
。
say 3.1; # OUTPUT: «3.1» (same as: Rat.new(31, 10))say 3.1.^name; # OUTPUT: «Rat»say 3.1.nude; # OUTPUT: «(31 10)»say <1/2>; # OUTPUT: «0.5» (same as: Rat.new(1, 2))say <1/2>.^name; # OUTPUT: «Rat»say <1/2>.nude; # OUTPUT: «(1 2)»
因此,使用短点分数字进行算术运算不会出现浮点数错误。
为了防止分子和分母变得病态地大,分母被限制为 64 位存储。在算术运算过程中分母溢出时,会返回一个 Num
(浮点数)。你可以通过设置 $*RAT-OVERFLOW
动态变量来调整此行为。
例如,此函数粗略地逼近平方根,并快速溢出分母
sub approx-sqrt(, )say approx-sqrt(2, 5).^name; # OUTPUT: «Rat»say approx-sqrt(2, 10).^name; # OUTPUT: «Num»
如果你希望对有理数进行任意精度的算术运算,请改用 FatRat
类型。
Rat
对象是不可变的。
方法§
方法 raku§
multi method raku(Rat: --> Str)
返回一个特定于实现的字符串,当提供给 EVAL 时,该字符串会生成一个 等效 对象。
say (1/3).raku; # OUTPUT: «<1/3>»say (2/4).raku; # OUTPUT: «0.5»