今天分享一个php教程,以PHP数值运算为案例,在数值计算中我们有可能会遇到这样的情况,(int)(0.58*100) = 57,预期值为58,0.57经过这样的计算也是这样的。这是什么情况呢?
这个问题是因为,计算机计算10进制是要把十进制转化成二进制计算完后再转化回来显示,而0.57,0.58在转化成10进制时是个无穷二进制小数也,就是不能转化成一个有穷二级制小数。当强制整形(int) 或者intval()的时候会截断小数位导致数值失真。
这看起来是个小问题,但是失之毫厘谬以千里,特别是在计算钱的时候。
如果遇到这种问题咋办?
首先我认为关于价格的计算设计数据库的时候多保留几位小数比如3位或者4位,第二最小单位可以设置为分。其次就是用round()函数四舍五入。
以上就是关于这类计算的部分内容,想要了解更多关于php数值计算的tips欢迎关注编程学习网
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/7771/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取