【问题标题】:Java ResultSet adding zerosJava ResultSet 添加零
【发布时间】:2018-06-30 01:36:08
【问题描述】:

这里的行为很奇怪。

在 SQL Server 数据库中,列类型为 Numeric(20,6),但结果集检索由一堆零添加的值:

表:952.346,44 - 890.00

结果集:952346.440000 -> 890000.000000

应用程序在 WAS 8.5、Java 7 上运行,带有 JDBC 驱动程序 sqljdbc4-4.1.jar

【问题讨论】:

  • 从技术上讲,952346.44 和 952346.440000 之间没有区别。如果您需要格式化,您可以单独格式化这些数字。
  • 这还不清楚。 890.00 是什么?根据前面的示例,您似乎正在使用欧洲大陆区域设置,其中点是千位分隔符,逗号是小数分隔符。 890.00 在该系统中是无效语法。

标签: java sql-server database jdbc resultset


【解决方案1】:

正如你提到的Numeric(20,6),这意味着数字的比例是6

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

现在如果你想减少2位小数,你可以简单地更新列类型,或者如果它已经在生产中,你可以在JAVA中通过各种可能的方式简单地减少数字,其中如下:

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

【讨论】:

  • 最好使用BigDecimal.setScale
【解决方案2】:

您的列是NUMERIC(20,6),其中 6 是刻度,指定小数位数。也就是说,这些值已经分别为952346.440000890000.000000,而JDBC只是按照规范返回它们。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    相关资源
    最近更新 更多