LlewynDav 2023-09-11 10:21 采纳率: 42.9%
浏览 6

pg数据库numeric类型数据如何判定值为零


                    Object acStrayCurrent = stringObjectMap.get("acStrayCurrent");
                    Object dcStrayCurrent = stringObjectMap.get("dcStrayCurrent");
                    if ((acStrayCurrent != null && !acStrayCurrent.equals(BigDecimal.ZERO))
                            || (dcStrayCurrent != null && !dcStrayCurrent.equals(BigDecimal.ZERO))) {
                        // -------
                    }

为什么上面这段代码不能判定pg数据库中对应的numeric(10,2)的值为0.00的情况?
##现在需要判定当acStrayCurrent 或 dcStrayCurrent 任意一个不等于空且不等于0.00(numeric(10, 2))才能进入if内部该如何判定,目前来看好像acStrayCurrent.equals(BigDecimal.ZERO)不能正确判定0.00

  • 写回答

2条回答 默认 最新

  • 呈两面包夹芝士 2023-09-11 10:36
    关注

    你遇到的问题可能是由于BigDecimal.ZERO实际上是一个BigDecimal对象,而你的stringObjectMap似乎返回一个Object类型。当你从stringObjectMap获取一个Object并尝试将其与BigDecimal.ZERO进行比较时,Java可能无法正确解析这个比较。

    如果你确定stringObjectMap中的值是BigDecimal类型,你可以尝试将获取的对象转换为BigDecimal,然后再与BigDecimal.ZERO进行比较。以下是修改后的代码:

    Object acStrayCurrent = stringObjectMap.get("acStrayCurrent");
    Object dcStrayCurrent = stringObjectMap.get("dcStrayCurrent");
    
    if (acStrayCurrent != null && acStrayCurrent instanceof BigDecimal && !((BigDecimal) acStrayCurrent).equals(BigDecimal.ZERO)) {
        // -------
    }
    if (dcStrayCurrent != null && dcStrayCurrent instanceof BigDecimal && !((BigDecimal) dcStrayCurrent).equals(BigDecimal.ZERO)) {
        // -------
    }
    

    上述代码首先检查获取的对象是否为null,然后检查它是否是BigDecimal的实例,然后再将其转换为BigDecimal并与ZERO进行比较。如果任何一个条件为真,则执行相应的操作。

    这样修改之后,应该可以解决你的问题。如果仍然存在问题,可能需要进一步检查你的数据库和映射代码,以确保数据的类型和你在Java代码中使用的类型相匹配。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月11日

悬赏问题

  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比