关于微信支付 支付宝支付价格精度问题
来源:互联网 发布:网络彩票合法吗 编辑:程序博客网 时间:2024/04/29 20:00
微信支付上遇见少一分钱的问题,但是支付宝没有此问题,查找之后,确定问题出在微信价格单位按分算,支付宝是按元计算,
因为数据库使用decimal 保留两位小数,这和支付宝一致,在微信支付时取出数据库保存的价格*100再转int ,问题就出在这里,float转int精度损失。
知道问题所在就好办了。
解决方法有两种:
1. 利用四舍五入:
2.利用php bc数学函数库:
因为数据库使用decimal 保留两位小数,这和支付宝一致,在微信支付时取出数据库保存的价格*100再转int ,问题就出在这里,float转int精度损失。
[root@yunduanlocal api]# php -r "var_dump((int)(18.90*100));"int(1889)
知道问题所在就好办了。
解决方法有两种:
1. 利用四舍五入:
[root@yunduanlocal api]# php -r "var_dump((int)(18.90*100 + 0.5));"int(1890)下面例子可以说明php float转int
echo '<pre>';$a=0.11;$b=(int)$a; //$b=0;echo $b.'<br>';$a=0.99;$b=(int)$a; //$b=0;echo $b.'<br>';$a=1.11;$b=(int)$a; //$b=1;echo $b.'<br>';$a=1.99;$b=(int)$a; //$b=1;echo $b.'<br>';
2.利用php bc数学函数库:
[root@yunduanlocal api]# php -r "var_dump((int)bcmul(18.90, 100));"int(1890)[root@yunduanlocal api]# php -r "var_dump((int)bcmul('18.90', '100'));"int(1890)
bc函数库文档:http://php.net/manual/zh/ref.bc.php
1 0
- 关于微信支付 支付宝支付价格精度问题
- 关于支付(支付宝和微信)
- Android中关于微信支付和支付宝支付
- 微信支付与支付宝支付
- 支付宝支付与微信支付
- 微信支付和支付宝支付
- 微信支付与支付宝支付
- 支付宝支付和微信支付
- 微信支付和支付宝支付
- 支付宝支付接入+微信支付
- 微信支付,支付宝支付 iOS
- 微信、支付宝支付
- 支付宝,微信支付
- 支付宝 微信支付
- 支付宝-微信支付
- javaWeb微信支付+支付宝支付+银联支付
- 关于微信支付
- 关于微信支付
- django 1.8中文显示、时区设置
- Common - 超级用户模拟别的用户
- PHP源码中变量存储方式
- Android ——SoundPool播放音频
- Andorid关于注册游戏帐号界面(UI)
- 关于微信支付 支付宝支付价格精度问题
- Oracle的rman备份与恢复
- Spring Hibernate 单元测试配置为事务自动回滚时需要提交事务时的处理
- Android学习——二维码生成 设置大小,白边 等
- 弱类型、强类型、动态类型、静态类型语言的区别
- Android-类qq功能(二)
- Windows多线程总结(1)-- 线程的创建
- 参数传递
- 安卓 获取imageview的bitmap,并保存,用于app头像上传获取