微信支付遇到一个坑,踩了好久............
再价格处理方面,往往是两位小数换算成分,如19.90换算成分1990,直接乘以100也就行了,但是又使用了一个转换为整数类型的函数intval()
这下子结果就不对了,如下:
19.90
intval(
float(19.90*100)1990)
这是因为浮点类型的数字不能在不丢失一点儿精度的情况下通过内部二进制转换得到结果的,换句话说就是浮点类型的计算都会丢失精度的。
该函数的解决方法手册上也给出了,就是需要先使用strval()
函数将变量转成字符串类型
intval(strval($price*100)) = 1990 ;