gpt4 book ai didi

php - fmod 返回不正确的结果

转载 作者:行者123 更新时间:2023-12-01 14:36:50 24 4
gpt4 key购买 nike

为什么 PHP 的 fmod 函数不能按预期工作。我错过了什么吗?

fmod(2.0, 0.1); // outputs 0.1

以下应输出 0,因为 2.0/0.1 = 20,因此没有余数。我知道 float 学错误,但这个函数是专门为 float 设计的,所以我不确定为什么它会返回不正确的结果。

最佳答案

最接近 0.1 的 IEEE 754 64 位二进制数是 0.1000000000000000055511151231257827021181583404541015625。大于2.0的20倍。它少了 19 倍,余数为 0.0999999999999998667732370449812151491641998291015625。根据您打印剩余部分的方式,它可能会显示为“0.1”。

这里的关键是 fmod 完全它应该做的,给定实际输入 2.0 和 0.1000000000000000055511151231257827021181583404541015625。无法准确表示 0.1 是二进制 float 的一个众所周知的后果。

关于php - fmod 返回不正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32996034/

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