mysql decimal類型的精度問題

若是是小數精度是16位,計算的時候要特別當心,好比balance和locked的類型是decimal(32,16),下面的sql就會有精度問題:sql

UPDATE accounts SET balance = balance - '2.2345678977654321', locked = locked + '2.2345678977654321' WHERE accounts.id = 1

改爲下面的就能夠了code

UPDATE accounts SET balance = balance - cast('2.2345678977654321' as decimal(32,16)), locked = locked + cast('2.2345678977654321' as decimal(32,16))  WHERE accounts.id = 1

更新:ci

問題出在用了字符串上,改爲以下也就正確了:字符串

UPDATE accounts SET balance = balance - 2.2345678977654321, locked = locked + 2.2345678977654321 WHERE accounts.id = 1
相關文章
相關標籤/搜索