Home  >  Article  >  Backend Development  >  大家是如何避免金额转换的

大家是如何避免金额转换的

WBOY
WBOYOriginal
2016-06-13 10:16:22919browse

大家是如何处理金额转换的?
比如表单提交过来的
最低竞价额,比如 51
每日消费最高限额,比如123456789.12
用floatval转换不会损失精度吗?
mysql数据库,存储类型为decimal(10, 2)

------解决方案--------------------
用floatval转换不会损失精度吗?
会!

但是你为什么要转换成 float 呢?

------解决方案--------------------
不会吧,你本来存进去就是浮点型的,取出来也一样,或者用sprintf("%01.2f", $money);
------解决方案--------------------

探讨

引用:

用floatval转换不会损失精度吗?
会!

但是你为什么要转换成 float 呢?


不是一定要转换float
我想问的是提交过来的money怎么验证?

------解决方案--------------------
money怎么验证?

可以有 +- 做前导
可以有 , 分节
可以有 . 小数点
除此以外都是数字

如果你还需要判断值设为范围,那请用 BC math 高精度数学函数

------解决方案--------------------
涉及到钱的问题马虎不得,建议以分为单位,这样所有的计算都是整数计算,实际中不会存在精度的问题
------解决方案--------------------
... ... 

你能不能说清楚到底是什么目的?
防止注入?
验证金额数额是否准确?
------解决方案--------------------
探讨

引用:

... ...

你能不能说清楚到底是什么目的?
防止注入?
验证金额数额是否准确?


转换就是为了防止注入
而且转换的时候不能损失精度。
应该是两者都有吧
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn