[英]Mysql. Function ROUND doesn't give right value
我對此選擇有問題:
select @a := 992.7500, ROUND(@a * (1 + 18 / 100), 2) AS Total;
作為總計,其值為1171.44,但其值必須為1171.45。 如果執行Workbench並且我再次運行相同的選擇,它將獲得正確的值。
¿我如何才能獲得正確的價值? 謝謝。
那是正確的值。 它僅根據規范使用Banker的舍入。
ROUND()根據第一個參數的類型使用以下規則:
對於精確值數字,ROUND()使用“從零開始舍入一半”或“向最接近的舍入”規則:小數部分為.5或更大的值將被四舍五入到下一個整數,如果為正數則向下舍入下一個整數(如果為負)。 (換句話說,四舍五入為零。)小數部分小於0.5的值如果為正則四舍五入到下一個整數,如果為負則四舍五入到下一個整數。
對於近似值數字,結果取決於C庫。 在許多系統上,這意味着ROUND()使用“四舍五入到最接近的偶數”規則:將具有小數部分的值四舍五入到最接近的偶數整數。
對於不精確的數值(例如double
,Banker的舍入或“四舍五入到最接近的偶數”是首選的舍入方法,因為它解決了替代方案的向上偏差。
Bankers四舍五入是一種將數量四舍五入為整數的算法,其中將與兩個最接近的整數等距的數字四舍五入為最接近的偶數整數。 因此,0.5向下舍入為0; 1.5向上舍入為2。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.