我有一份准备好的声明。我打电话给
stmt.setBigDecimal(BigDecimal.valueOf("0.9"))
问题是在数据库中保存了0.90000000000000000000而不是0.9。
我使用的是Microsoft SQL Server JDBC Driver 3.0。
驱动程序是不是理解了BigDecimal还是让驱动程序做错了什么?
答案 0 :(得分:2)
当您指示数据类型为DECIMAL(36,20)时,它完全符合逻辑:36,20表示:36个数字精度,其中小数点分隔符后有20个。
如果在DECIMAL(36,20)中保存0.9,它将是0.90000000000000000000(小数点分隔符后面有20个位置),因为这是该字段的指定精度。
答案 1 :(得分:1)
列上的精度可能是造成这种情况的原因。很可能它被声明为数字,没有特定的精度或比例。