今天分享一个php教程,以PHP数值运算为案例,在数值计算中我们有可能会遇到这样的情况,(int)(0.58*100) = 57,预期值为58,0.57经过这样的计算也是这样的。这是什么情况呢?

这个问题是因为,计算机计算10进制是要把十进制转化成二进制计算完后再转化回来显示,而0.57,0.58在转化成10进制时是个无穷二进制小数也,就是不能转化成一个有穷二级制小数。当强制整形(int) 或者intval()的时候会截断小数位导致数值失真。

这看起来是个小问题,但是失之毫厘谬以千里,特别是在计算钱的时候。

如果遇到这种问题咋办?

首先我认为关于价格的计算设计数据库的时候多保留几位小数比如3位或者4位,第二最小单位可以设置为分。其次就是用round()函数四舍五入。

以上就是关于这类计算的部分内容,想要了解更多关于php数值计算的tips欢迎关注编程学习网