BigDecimal 的 java 数学库,它允许空值

新手上路,请多包涵

是否有一个具有 BigDecimal 基本操作的 BigDecimal 库,它允许空值?

出于数学目的,应将 Null 视为 0。

我不想对可能的空值进行所有空检查。

您要么永远不允许在数据库、应用程序中使用空值,要么使用 new BigDecimal(0) 查看和初始化所有内容,或者对可为空值的每次使用执行空值检查。

就像是:

 public static BigDecimal add(final BigDecimal value, final BigDecimal augend)
{
    if (value == null)
        return augend;
    else if (augend == null)
        return value;
    else
        return value.add(augend);
}

public static BigDecimal multiply(final BigDecimal value, final BigDecimal multiplicand)
{
    if (value == null || multiplicand == null)
        return null;

    return value.multiply(multiplicand);
}

原文由 djmj 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

保存编码,只是不允许数据库中有空值。将默认值设置为零。

至于 new BigDecimal(0) :不,使用 BigDecimal.ZERO

原文由 user207421 发布,翻译遵循 CC BY-SA 3.0 许可协议

我有一个类似的问题(虽然与数据库无关,只需要总结几个可为空的 BigDecimal s)。没有找到任何库,所以只好自己编写以下函数:

 public static BigDecimal add(BigDecimal... addends) {
    BigDecimal sum = BigDecimal.ZERO;
    if (addends != null) {
        for (BigDecimal addend : addends) {
            if (addend == null) {
                addend = BigDecimal.ZERO;
            }
            sum = sum.add(addend);
        }
    }
    return sum;
}

在 Java 8 中也是如此:

 public static BigDecimal add(BigDecimal... addends) {
    if (addends == null) {
        return BigDecimal.ZERO;
    }
    return Arrays.stream(addends)
            .filter(Objects::nonNull)
            .reduce(BigDecimal.ZERO, BigDecimal::add);
}

原文由 Bunarro 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题