gpt4 book ai didi

perl - int() 递减一个整数

转载 作者:行者123 更新时间:2023-12-02 00:27:56 27 4
gpt4 key购买 nike

在我受到批评之前,我想说我确实了解 float 和类似的东西,但这似乎不是我的问题。

为了简化事情,我试图确定一个数字是否有超过 2 位小数。我将数字乘以 100(存储在变量“test1”下),然后用 int() ($test2) 截断它,并将其与如果

$test1 = $number * 100;
$test2 = int($test1);
unless ($test1 == $test2) {
die ("test1:$test1, test2:$test2");
}

最初的$number来自一系列其他函数,并且实际上应该只有两位小数,因此我试图捕获那些不是(因为一些条目似乎有很多小数)。

但是,我刚刚得到:

test1:15, test2:14

来 self 的die()

有人可以解释一下这是如何发生的吗? int(15) 怎么会是 14

最佳答案

来自perldoc :

machine representations of floating-point numbers can sometimes produce counterintuitive results. For example, int(-6.725/0.025) produces -268 rather than the correct -269; that's because it's really more like -268.99999999999994315658 instead

因此,“15”的机器表示可能类似于 14.9999999999999999,因此 int 将其截断为 14。

请注意,perldoc 建议使用 POSIX 函数 floorceil 代替。

关于perl - int() 递减一个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26920188/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com