Java结果集添加零

Java结果集添加零,java,sql-server,database,jdbc,resultset,Java,Sql Server,Database,Jdbc,Resultset,奇怪的行为 在SQL Server数据库上,列类型为数字(20,6),但resultset检索由一群零添加的值: 表:952.346,44-890.00 结果集:952346.440000->890000.000000 应用程序运行在WAS 8.5、Java 7和JDBC驱动程序sqljdbc4-4.1.jar上,正如您所提到的Numeric(20,6),这意味着数字的刻度是6 这就是Java中考虑相同精度的原因 现在,如果您想将其减少到小数点后2位,您可以简单地更新列类型,或者如果它已经在生产

奇怪的行为

在SQL Server数据库上,列类型为数字(20,6),但resultset检索由一群零添加的值:

表:952.346,44-890.00

结果集:952346.440000->890000.000000


应用程序运行在WAS 8.5、Java 7和JDBC驱动程序sqljdbc4-4.1.jar上,正如您所提到的
Numeric(20,6)
,这意味着数字的刻度是6

这就是Java中考虑相同精度的原因

现在,如果您想将其减少到小数点后2位,您可以简单地更新列类型,或者如果它已经在生产中,您可以简单地使用各种可能的方法在JAVA中减少其数量,具体方法如下:

Double.parseDouble(String.format("%.2f", 952346.440000));

您的列是一个
数字(20,6)
,其中的6表示小数位数,并指定小数位数。换句话说,已经的值是
952346.440000
890000.000000
,JDBC只是根据规范返回了它们


如果只需要2位小数,则使用
数字(20,2)
。或者使用
BigDecimal.setScale
方法之一重新缩放代码中的数字。

从技术上讲,952346.44和952346.440000之间没有区别。如果您需要格式化,您可以单独格式化这些数字。这是不清楚的。什么是
890.00
?根据前面的示例,看起来您使用的是欧洲大陆地区,其中点是千位分隔符,逗号是十进制分隔符
890.00
在该系统中是无效语法。最好使用
BigDecimal.setScale