PHP整数舍入问题

jos*_*im5 5 php floating-point integer

echo (int) ( (0.1+0.7) * 10 );

为什么以上输出7?我理解PHP如何向0舍入,但不是(0.1+0.7) * 10作为一个浮点数计算,然后作为整数转换?

谢谢!

bco*_*sca 7

当小数位在内部转换为二进制等效值时,精度会有所下降.计算出的值将是7.9+而不是预期的8.

如果您需要高度准确性,请使用GMP系列函数或bcmath库.