电商网站价格运算浮点数计算方式问题?

和女神嗯嗯
  • 2.6k

电商网站的价格计算可以使用PHP直接运算吗?

因为PHP对浮点运算都不是非常精准的, 商品价格保留三位小数
比如 200.050 这样的话,订单结算有问题吗??会不会
导致订单价格和商品SKU价格略有浮动?

像京东这样的电商网站,商品订单价格如何运算?用什么价格计算工具?

回复
阅读 5.4k
7 个回答

像金额这样的敏感数据,肯定不能直接使用浮点变量简单粗暴地运算,可以使用一些数学扩展库,如php-bcmath

谢邀.
正如1楼所说的,你这个不精确确实派不上.我的建议是这样的,如果对金钱这块精确度一定要高的话,可以参考用int类型来存储.存成人民币:分.当然,这个看实际的需求.但是如果说对精度要求一定要高的话,而且为了方便,你可以用PHP的一个扩展bcmath来解决.特大不考虑.比如说上几亿这种.实际上,很多情况下,商品只会用到分这个单位,可能在打折的时候,需要计算下精度问题.通常来说,在开发小型电商网站,数据库存成decimal就可以了

见过有金融公司用 decimal 类型 存储金额。
PHP 中处理时,会用到如下函数 或 库:

金额是浮点数,避免直接对金额进行 mysql-sum 或 PHP 中正常的 + - 等操作。

所谓的不精确,是指小数点后面第14位不精确。你这远远不够。

我们公司商品的价格存的就是decimal

没有decimal这种类型吗,这种类型的计算过程中是不会丢失精度的。

mysql存储金额用decimal类型
业务中的运算用bcmath(bcadd,bcdiv...)

宣传栏