当前位置: 首页 > 知识库问答 >
问题:

查询结果在Java上打印为小数而不是整数[重复]

秦才英
2023-03-14

在我的项目中,有一个函数可以根据列类型获取查询结果。在这种情况下,列类型在Oracle数据库中定义为:NUMBER(15,5)。但实际的查询结果是一个整数,例如:2000,但问题是,在代码中,我们将其转换为十进制,结果将更改为:2000.00000

我们使用BigDecimal,并对结果进行缩放。是否有一种简短、正确的方法来处理列类型为:NUMBER(15,5)的数据库中的所有结果?当结果是整数时,它将是整数,当它是小数点且小数位数为5时,结果将是这样的。这是我们的switch案例中处理它的案例:

                    String cellData;
                    case Types.DECIMAL:
                        BigDecimal number = rs.getBigDecimal(i);
                        if (number != null) {
                            int scale = rsMetadata.getScale(i);
                            int precision = rsMetadata.getPrecision(i);
                            cellData = number.setScale(scale).toPlainString();

也许和精度有关?因为现在我们只使用天平。

共有1个答案

姬昊焱
2023-03-14

您可以这样做,以所需的精度输出整数或小数:

String cellData;
BigDecimal number = rs.getBigDecimal(i);
BigDecimal integerValue = null;
if (number != null) {
    int scale = rsMetadata.getScale(i);
    int precision = rsMetadata.getPrecision(i);
    number.setScale(scale, BigDecimal.ROUND_HALF_UP);
    // something else?
    if (Types.INTEGER) {
        integerValue = number.toBigInteger(); // or number.toBigIntegerExact();
    }
}
// store decimal or integer
 类似资料:
  • 查询结果的重打分 有些应用场景中,对查询语句的结果文档进行重新打分是很有必要的。重新打分的原因可能会各不相同。其中的一个原因可能是出于性能的考虑,比如,对整个有序的结果集进行重排序开销会很大,通常就会只对结果集的子集进行处理。可以想象重打分在业务中应用会相当广泛。接下来了解一下这项功能,学习如何将它应用在业务中。 理解重打分 在ElasticSearch中,重打分是一个对限定数目的查询结果进行再次

  • 这个说法我不清楚。你能更多地解释一下这个用例吗?

  • 问题内容: 嘿,我是新来的hibernate。我不得不说,它确实简化了SQL查询的所有操作。但是,操作返回的结果目前对我来说很头疼。 结果以列表形式返回。大多数时候,我真的希望结果位于结果集中,这样我可以像使用结果集那样更轻松地操作它,可以按列名或索引指定值。在List中,我几乎归自己的贵族所有。 在某种程度上,我可以将列表检索到JSF数据表中,然后直接调用该成员。我不能总是这样做。不要问我为什么

  • 问题内容: 在我的代码中,我使用整数乘以100作为小数(0.1为10等)。您能帮我格式化输出以显示为十进制吗? 问题答案:

  • 程序工作和打印echo语句,如标题、作者、ISBN和价格,但不打印从数据库获取的值。程序无法显示查询结果,如$row['title]、$row['isbn']、$row['AUTHER']和$row['price']。 数据库名称:books。表名还包括书籍。

  • 问题内容: 当我使用pg_query,pg_fetch_assoc从PostgreSQL数据库获取数据时,所有数字字段都以字符串形式返回。有没有解决的办法,还是我必须按照自己的方式对每个字段进行类型转换? 问题答案: 这就是PHP所做的。从手册: 数组中的每个值都表示为一个字符串。