場景
通過 Excel 導入數據,數據中包含金額。數據庫類型 decimal(18, 6)
問題
Excel 導入后所有的金額列都被四舍五入。經過測試,只有數據有整數時所有數據才會被四舍五入,全部為浮點類型沒有問題。
解決
強制設置小數位數
// RoundingMode.HALF_UP 為舍入參數,相當于小數位大于6時截斷位的四舍五入
new BigDecimal(infoImport.getMoney()).setScale(6, RoundingMode.HALF_UP);
原因
整數類型字符串轉為 BigDecimal 類型時,默認的小數位為 0 從而影響了其他數值,具體為什么會影響其他數值暫時未知,可能是 Mybatis 或是 SqlServer 的問題。如果您知道,歡迎評論解答~