我有一個準備好的聲明。我打電話通過預處理語句發出setBigDecimal?
stmt.setBigDecimal(BigDecimal.valueOf("0.9"))
問題是在數據庫中保存了0.90000000000000000000而不是0.9。
我使用Microsoft SQL Server JDBC Driver 3.0。
是BigDecimal不被驅動程序理解或使驅動程序做錯了什麼?
我有一個準備好的聲明。我打電話通過預處理語句發出setBigDecimal?
stmt.setBigDecimal(BigDecimal.valueOf("0.9"))
問題是在數據庫中保存了0.90000000000000000000而不是0.9。
我使用Microsoft SQL Server JDBC Driver 3.0。
是BigDecimal不被驅動程序理解或使驅動程序做錯了什麼?
當您指出數據類型是DECIMAL(36,20)時,它是完全合乎邏輯的:36,20表示:36位數精度,其中小數點分隔符後有20位數。
如果在DECIMAL(36,20)中保存了0.9,則它將是0.90000000000000000000(它在小數點分隔符後有20個位置),因爲這是該字段的指定精度。
thx,是的,這是合乎邏輯的。但我覺得這不是那麼聰明......我的意思是如果我從數據庫中讀取數值,所有的計算都使用20位小數位來完成...... – Zardo
如果這不是你想要的,你應該在數據庫中的DECIMAL數據類型,或將字段強制轉換爲select中的較小比例的DECIMAL類型。 –
該列的完整定義是什麼? –
十進制(36,20) – Zardo