您的位置:首页 > 编程语言 > PHP开发

php intval 两位小数乘以100后结果少1

2016-09-09 11:42 337 查看
因为工作需要,价格处理的时候往往是两位小数需要换算成分,如:16.33元换算为1633分,直接乘以100也就行了的,但是又使用了一个转换为整数类型的函数
intval()
这下子结果就不对了,如图:



结果:



可以看出原本结果应该是1633的,但是使用了函数
intval()
之后结果居然变为了1632了,这是由于浮点类型的数字不能在不丢失一点儿精度的情况下通过内部二进制转换得到结果的,换句话说就是浮点类型的计算都会丢失精度的。

该函数的解决方法手册上也给出了,就是需要先使用
strval()
函数将变量转成字符串类型,使用情况及结果如下:





还有就是直接使用类型转换也是不行的,如:
(int)($pay_price*100)
结果也会损失精度的。

如图:





Author:
leedaning


本文地址:这里写链接内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: