gpt4 book ai didi

PHP ceil 函数的奇怪行为?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:06:35 26 4
gpt4 key购买 nike

谁能解释一下?

echo ceil( 20.7 * 100 ); // returns 2070
echo ceil( 2070 ); // returns 2070

一切正常,合乎逻辑,但是

echo ceil( 40.7 * 100 ); // returns 4071
echo ceil( 4070 ); // returns 4070

不正常也不合逻辑...

为什么会有这种差异?

谢谢

最佳答案

float 的奇妙世界:

printf("%.18f\n", 40.7*100);

//prints 4070.000000000000454747

printf("%.18f\n", 20.7*100);

//prints 2070.000000000000000000

简而言之: float 不能准确表示所有有理数。特别是407/10和207/10都不能精确表示,所以整数转换的结果总是有一个单位的不确定性。

唯一可以精确表示为二进制 float 的有理数是“小奇整数乘以 2 的幂”的形式,或者换句话说,那些具有小二进制展开的有理数。

关于PHP ceil 函数的奇怪行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8270533/

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