Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否通过准备好的语句发出setBigDecimal?_Java_Jdbc_Prepared Statement_Bigdecimal - Fatal编程技术网

Java 是否通过准备好的语句发出setBigDecimal?

Java 是否通过准备好的语句发出setBigDecimal?,java,jdbc,prepared-statement,bigdecimal,Java,Jdbc,Prepared Statement,Bigdecimal,我有一份准备好的声明。我打电话 stmt.setBigDecimal(BigDecimal.valueOf("0.9")) 问题是数据库中保存的是0.9000000000000000000,而不是0.9 我使用MicrosoftSQLServerJDBC驱动程序3.0 驱动程序是否不理解BigDecimal或使驱动程序出错?列上的精度可能是导致此问题的原因。很可能它被声明为数字,没有特定的精度或刻度。列上的精度可能是导致此情况的原因。很可能它被声明为数字,没有特定的精度或刻度。当您指出数据类型

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

stmt.setBigDecimal(BigDecimal.valueOf("0.9"))
问题是数据库中保存的是0.9000000000000000000,而不是0.9

我使用MicrosoftSQLServerJDBC驱动程序3.0


驱动程序是否不理解BigDecimal或使驱动程序出错?

列上的精度可能是导致此问题的原因。很可能它被声明为数字,没有特定的精度或刻度。

列上的精度可能是导致此情况的原因。很可能它被声明为数字,没有特定的精度或刻度。

当您指出数据类型为十进制(36,20)时,它完全符合逻辑:36,20表示:36个数字精度,其中十进制分隔符后面有20个数字


如果将0.9保存为十进制(36,20),则它将是0.9000000000000000000(在十进制分隔符后有20个位置),因为这是字段的指定精度。

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


如果将0.9保存为十进制(36,20),它将是0.9000000000000000000(在十进制分隔符后有20个位置),因为这是字段的指定精度。

该列的完整定义是什么?该列的完整定义是什么?它声明为十进制(36,20)它声明为十进制(36,20)thx,是的,这是合乎逻辑的,对吧。但我觉得这没那么聪明。。。我的意思是,如果我从数据库中读取值,所有计算都使用20个十进制位置完成…如果这不是您想要的,您应该在数据库中的十进制数据类型中使用较小的比例,或者在select.thx中将字段转换为较小比例的十进制类型。是的,这是符合逻辑的,对吗。但我觉得这没那么聪明。。。我的意思是,如果我从数据库中读取值,所有计算都是使用20个十进制位置完成的……如果这不是您想要的,您应该在数据库中的decimal数据类型中使用较小的比例,或者在选择中将字段转换为较小比例的decimal类型。