鍍金池/ 問答/PHP/ 電商網站價格運算浮點數(shù)計算方式問題?

電商網站價格運算浮點數(shù)計算方式問題?

電商網站的價格計算可以使用PHP直接運算嗎?

因為PHP對浮點運算都不是非常精準的, 商品價格保留三位小數(shù)
比如 200.050 這樣的話,訂單結算有問題嗎??會不會
導致訂單價格和商品SKU價格略有浮動?

像京東這樣的電商網站,商品訂單價格如何運算?用什么價格計算工具?

回答
編輯回答
熊出沒

mysql存儲金額用decimal類型
業(yè)務中的運算用bcmath(bcadd,bcdiv...)

2017年4月26日 20:44
編輯回答
默念

像金額這樣的敏感數(shù)據(jù),肯定不能直接使用浮點變量簡單粗暴地運算,可以使用一些數(shù)學擴展庫,如php-bcmath

2017年2月23日 05:44
編輯回答
命多硬

我們公司商品的價格存的就是decimal

2018年4月18日 02:11
編輯回答
舊顏

所謂的不精確,是指小數(shù)點后面第14位不精確。你這遠遠不夠。

2018年3月30日 23:44
編輯回答
舊顏

沒有decimal這種類型嗎,這種類型的計算過程中是不會丟失精度的。

2018年2月26日 21:44
編輯回答
不將就

見過有金融公司用 decimal 類型 存儲金額。
PHP 中處理時,會用到如下函數(shù) 或 庫:

金額是浮點數(shù),避免直接對金額進行 mysql-sum 或 PHP 中正常的 + - 等操作。

2018年7月14日 15:17
編輯回答
瘋浪

謝邀.
正如1樓所說的,你這個不精確確實派不上.我的建議是這樣的,如果對金錢這塊精確度一定要高的話,可以參考用int類型來存儲.存成人民幣:分.當然,這個看實際的需求.但是如果說對精度要求一定要高的話,而且為了方便,你可以用PHP的一個擴展bcmath來解決.特大不考慮.比如說上幾億這種.實際上,很多情況下,商品只會用到分這個單位,可能在打折的時候,需要計算下精度問題.通常來說,在開發(fā)小型電商網站,數(shù)據(jù)庫存成decimal就可以了

2017年3月5日 04:34