raku - Raku 中的有理数

标签 raku

我使用 Raku 进行一些计算,因为它有很好的数字类型。但是,我在使用“.raku”时遇到问题

say (1/6+1/6).raku
#<1/3>

我们得到这个。然而,
say (1/10+1/10).raku
#0.2

这是一个错误吗?我期待 <1/5>。发生什么了?

最佳答案

在乐,0.2构造一个 Rat ,因此产生与写入 1/5 完全相同的结果(将不断折叠)或 <1/5> (字面形式)。您只能在指定指数的情况下获得浮点数(例如, 2e-1 )。
.raku (以前称为 .perl )方法的工作是产生一些东西,如果 EVAL 将产生相同的值。 'd。在1/5的情况下,这可以精确地表示为小数,所以它会产生 0.2 .当小数形式不能往返时,它只采用小数表示。

您始终可以使用 .numerator 恢复分子和分母和 .denominator根据需要格式化的方法。另外 .nude方法返回分子和分母的列表,可以将其与 / 连接起来。如果需要:

say (1/6+1/6).nude.join("/");     # 1/3
say (1/10+1/10).nude.join("/");   # 1/5

关于raku - Raku 中的有理数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60895698/

相关文章:

roles - Roku中的参数化类型,如何使用运行时值作为参数

从语法中提取标记

raku - Perl6的Perlbrew

raku - 如何在Perl 6中模拟当前时间?

Raku-native 磁盘空间使用情况

metaprogramming - 如何使用元编程在 Perl 6 中创建枚举?

metaprogramming - 了解 Raku 的 `&?BLOCK` 编译时变量

parsing - 自定义解析返回值,保留未命名的终端

raku - perl6 是否有与 MAIN sub 等效的类方法?

regex - perl6 在正则表达式中否定多个单词及其字符的排列