为什么PHP的fmod功能不能按预期工作。我错过了什么吗?
fmod(2.0, 0.1); // outputs 0.1
以下应该输出0,因为2.0 / 0.1 = 20,因此没有余数。我知道浮点数学错误,但是这个函数专门用于浮点数,所以我不确定为什么会返回错误的结果。
答案 0 :(得分:2)
最接近的IEEE 754 64位二进制数为0.1是0.1000000000000000055511151231257827021181583404541015625。大于2.0的20倍。其次是19次,余数为0.0999999999999998667732370449812151491641998291015625。根据您打印剩余部分的方式,它可能会显示为“0.1”。
根据实际输入2.0和0.1000000000000000055511151231257827021181583404541015625,这里的关键是fmod
完全它应该做什么。无法准确表示0.1是二进制浮点的众所周知的结果。