公司项目在添加商品的时候当商品价格输入为19.9的时候,录入到数据库就变为19.89了 。这里需要把元转换为分,直接乘以100就可以,但是又使用了转化整数类型的函数:
int 或者 intval 结果都会少1
可以看出原本结果应该是1840的,但是使用了函数intval() 和 (int) 之后结果居然变为了1639了,这是由于浮点类型的数字不能在不丢失一点儿精度的情况下通过内部二进制转换得到结果的,换句话说就是浮点类型的计算都会丢失精度的。
该函数的解决方法手册上也给出了,就是需要先使用strval() 函数将变量转成字符串类型,使用情况及结果如下:
从上图可以看出,转换成字符串后,就可以避免Int的精度问题了。
PS:这里还特意去测试了下,发现只有XX.4和XX.9会出现这种精度问题
参考链接:https://blog.csdn.net/shinebxy/article/details/81355650
http://blog.pig87.com/index-article-aid-163.html