小编典典

你如何在 Perl 中对浮点数进行四舍五入?

all

如何将十进制数(浮点数)四舍五入到最接近的整数?

例如

1.2 = 1
1.7 = 2

阅读 165

收藏
2022-07-28

共1个答案

小编典典

的输出perldoc -q round

Perl 有 round() 函数吗?ceil() 和 floor() 呢?三角函数?

请记住,int()仅向
截断0。用于四舍五入到一定位数,sprintf()或者printf()通常是最简单的方法。

    printf("%.3f", 3.1415926535);       # prints 3.142

POSIX模块(标准 Perl 发行版的一部分)实现
ceil()floor()和许多其他数学和三角函数。

    use POSIX;
    $ceil   = ceil(3.5);                        # 4
    $floor  = floor(3.5);                       # 3

在 5.000 到 5.003 perls
中,在Math::Complex 模块中完成了三角函数。在
5.004 中,该Math::Trig模块(标准 Perl
发行版的一部分)实现了三角函数。在内部它使用Math::Complex模块并且一些函数可以从实轴分解到复平面,例如2的反正弦。

金融应用程序中的四舍五入可能会产生严重影响,并且应精确指定所使用的四舍五入方法。在这些情况下,不信任 Perl
使用的任何系统舍入可能是值得的,而是自己实现所需的舍入功能。

要了解原因,请注意在中途交替时您仍然会遇到问题:

    for ($i = 0; $i < 1.01; $i += 0.05) { printf "%.1f ",$i}

    0.0 0.1 0.1 0.2 0.2 0.2 0.3 0.3 0.4 0.4 0.5 0.5 0.6 0.7 0.7
    0.8 0.8 0.9 0.9 1.0 1.0

不要责怪 Perl。这与 C 中的相同。IEEE 说我们必须这样做。Perl 数字的绝对值是整数2**31(在 32
位机器上)将非常像数学整数一样工作。不保证其他数字。

2022-07-28