使用setBigDecimal通过预准备语句发出问题?

时间:2011-11-08 12:22:27

标签: java jdbc prepared-statement bigdecimal

我有一份准备好的声明。我打电话给

stmt.setBigDecimal(BigDecimal.valueOf("0.9"))

问题是在数据库中保存了0.90000000000000000000而不是0.9。

我使用的是Microsoft SQL Server JDBC Driver 3.0。

驱动程序是不是理解了BigDecimal还是让驱动程序做错了什么?

2 个答案:

答案 0 :(得分:2)

当您指示数据类型为DECIMAL(36,20)时,它完全符合逻辑:36,20表示:36个数字精度,其中小数点分隔符后有20个。

如果在DECIMAL(36,20)中保存0.9,它将是0.90000000000000000000(小数点分隔符后面有20个位置),因为这是该字段的指定精度。

答案 1 :(得分:1)

列上的精度可能是造成这种情况的原因。很可能它被声明为数字,没有特定的精度或比例。