PHP 解决INT类型转换 精度丢失问题

公司项目在添加商品的时候当商品价格输入为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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值