[英]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。 我有點擔心轉換的風險,經過幾次測試,總價格沒有差異。 我建議對有此問題的每個人都這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.