在 Complex 中§
参见主要文档 上下文中的方法 round
multi method round(Complex: --> Complex)multi method round(Complex: Real() --> Complex)
如果没有参数,则将实部和虚部都舍入到最接近的整数,并返回一个新的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), = 1)multi method round(Cool: = 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(1000, 23.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: = 1)
将数字舍入到比例$scale
。如果$scale
为 1,则舍入到整数。如果比例为0.1
,则舍入到小数点(句点或逗号)后一位,依此类推。