1. 程式人生 > >MySQL中round()四舍五入之坑

MySQL中round()四舍五入之坑

函數 數值 的確 sql pan var double TE 計算

計算數值時,因將一個數值由代碼四舍五入改成SQL四舍五入做整數處理而產生了誤差。該字段為varchar類型,修改後的計算結果與之前的結果當小數位為.5四舍五入進位時,竟然出現誤差。例如2.5,當字段類型為varchar或double類型時,使用round函數,結果為2,而decimal則進位正常。 執行SQL:SELECT c_varchar,round(c_varchar),c_double,round(c_double),c_decimal,round(c_decimal) from round_test 運行結果:2.5 2 2.50 2 2.50 3 參考相關資料,看到有人說將字段值相加一個不影響結果的小數後,數值可以正常,測試一下,的確如此。 執行SQL:
SELECT c_varchar,round(c_varchar+0.000001),c_double,round(c_double+0.000001),c_decimal,round(c_decimal) from round_test 運行結果:2.5 3 2.50 3 2.50 3 具體原因,後續分析。。。

MySQL中round()四舍五入之坑