PHP 中计算(int)(0.58*100)等于57的问题

Posted PHP老杨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 中计算(int)(0.58*100)等于57的问题相关的知识,希望对你有一定的参考价值。

       在牵扯到php数值运算中我们有可能会遇到这样的情况,(int)(0.58*100) = 57,预期值为58,0.57经过这样的计算也是这样的。这是什么情况呢?这个问题是因为,计算机计算10进制是要把十进制转化成二进制计算完后再转化回来显示,而0.57,0.58在转化成10进制时是个无穷二进制小数也,就是不能转化成一个有穷二级制小数。当强制整形(int) 或者intval()的时候会截断小数位导致数值失真。

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

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

以上是关于PHP 中计算(int)(0.58*100)等于57的问题的主要内容,如果未能解决你的问题,请参考以下文章

php高精度计算问题

php高精度计算问题

php中浮点数计算问题

PHP中浮点数计算问题整理(PHP电商价格用什么函数计算?)

求一个数组的数字有几种组合方式,6个数相加等于100.用PHP写的程式

C语言 怎么计算数组中每一个不同元素出现的次数