1、Decimal爲專門爲財務相關問題設計的數據類型。
與double相比,decimal 類型具有更高的精度和更小的範圍,它適合於財務和貨幣計算。【1】
2、float 和 double 在存儲的時候,存在精度損失的問題,但是decimal沒有或者很少有【2】
舉例一:在mysqlbinlog日誌就可以看到這種明細數據 使用DOUBLE 讀不到我們設置的長度和小數點
### @10=2999.6900000000000546 /* DOUBLE meta=8 nullable=0 is_null=0 */
舉例二:在mysqlbinlog日誌就可以看到這種明細數據 使用DECIMAL(12,2) 會是我們在設置數據庫時候的小數點和長度
### @10=2999.69 /* DECIMAL(12,2) meta=3074 nullable=0 is_null=0 */
3、實例驗證
圖示一、
圖示二、
分析:按照現在使用DOUBLE 但是在mysqlbinlog中就默認去掉數據庫中長度和小數點,結果就導致在mysqlbinlog中我們看到使用DOUBLE 後面的長度和小數點位數都沒有了,但是使用DECIMAL就不會導致出現這樣的結果
#參考資料
【1】https://baike.baidu.com/item/Decimal/8831799?fr=aladdin
https://www.linuxidc.com/Linux/2013-07/88032.htm
【2】https://blog.csdn.net/abc3224302/article/details/78106508
https://blog.csdn.net/m1654399928/article/details/54729409