在 Complex 中§

参见主要文档 上下文中的方法 round

multi method round(Complex:D: --> Complex:D)
multi method round(Complex:D: Real() $scale --> Complex:D)

如果没有参数,则将实部和虚部都舍入到最接近的整数,并返回一个新的Complex数字。如果给出了$scale,则将调用方的两部分舍入到$scale的最接近倍数。对数字的每个部分使用与 Real.round 相同的算法。

say (1.2-3.8i).round;           # OUTPUT: «1-4i␤» 
say (1.256-3.875i).round(0.1);  # OUTPUT: «1.3-3.9i␤»

在 Cool 中§

参见主要文档 上下文中的例程 round

multi        round(Numeric(Cool), $scale = 1)
multi method round(Cool:D: $scale = 1)

将调用方(或子表单中,其参数)强制转换为 Numeric,并将其舍入到$scale的单位。如果$scale为 1,则舍入到最接近的整数;任意比例将导致该数字最接近的倍数。

say 1.7.round;          # OUTPUT: «2␤» 
say 1.07.round(0.1);    # OUTPUT: «1.1␤» 
say 21.round(10);       # OUTPUT: «20␤» 
say round(100023.01)  # OUTPUT: «989.43␤»

如果数字处于中点,则始终向上舍入

say (−.5 ).round;       # OUTPUT: «0␤» 
say ( .5 ).round;       # OUTPUT: «1␤» 
say (−.55).round(.1);   # OUTPUT: «-0.5␤» 
say ( .55).round(.1);   # OUTPUT: «0.6␤»

使用此方法时,请注意类型,因为最终使用错误的类型可能会影响您想要达到的精度。对于 Real 类型,结果的类型是参数的类型(Complex 参数被强制转换为 Real,最终成为 Num)。如果舍入 Complex,则结果也是 Complex,而不管参数的类型如何。

9930972392403501.round(1)      .raku.say# OUTPUT: «9930972392403501␤» 
9930972392403501.round(1e0)    .raku.say# OUTPUT: «9.9309723924035e+15␤» 
9930972392403501.round(1e0).Int.raku.say# OUTPUT: «9930972392403500␤»

在角色 Real 中§

参见主要文档 上下文中的方法 round

method round(Real:D: $scale = 1)

将数字舍入到比例$scale。如果$scale为 1,则舍入到整数。如果比例为0.1,则舍入到小数点(句点或逗号)后一位,依此类推。