簡體   English   中英

在mysql中四舍五入無法正常工作

[英]Rounding in mysql doesn't work as expected

我不明白為什么我的結果與眾不同:

我有表訂單和列價格 (在mysql中輸入double )。

數據庫中的價格值為13.5

查詢:

SELECT ROUND(price * 0.09, 2) FROM orders where id = 1;

結果是: 1.21

查詢:

SELECT ROUND(13.5 * 0.09, 2);

結果是1.22

不取整: SELECT 13.5 * 0.09結果為1.215

因此,舍入后的正確結果為1.22

為什么SELECT ROUND(price * 0.09, 2) FROM orders where id = 1;查詢SELECT ROUND(price * 0.09, 2) FROM orders where id = 1; 給我錯誤的結果(1.21)?

我不明白這是怎么回事,我猜是在投射。

有人可以解釋一下嗎?

我無法發表評論,所以我給你答復。

閱讀此: http : //dev.mysql.com/doc/refman/5.7/en/problems-with-float.html

浮點和雙精度數據,不存儲確切的數字,因此有可能發現奇怪的問題。

按照AT-2016的要求嘗試CEIL,希望您能找到解決方案。

如果數據類型為浮點型,則使用WHERE 1命令從SELECT SELECT round(cast(qty as decimal(10,2))* 0.99,2)

最后,我將列轉換為小數點15,2。 我有點擔心轉換的風險,經過幾次測試,總價格沒有差異。 我建議對有此問題的每個人都這樣做。

在MySQL中存儲貨幣值的最佳數據類型

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM