BigDecimal的java数学库,允许空值

djm*_*jmj 10 java bigdecimal

是否有一个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);
}
Run Code Online (Sandbox Code Playgroud)

use*_*421 16

保存编码,只是不允许数据库中的空值.使默认值为零.

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

  • 'BigDecimal.Zero`的+1.从未检查过. (2认同)

Bun*_*rro 12

我有一个类似的问题(虽然与数据库无关,只需要总结一些可能为null的BigDecimals).没有找到任何库,所以不得不自己编写以下函数:

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;
}
Run Code Online (Sandbox Code Playgroud)

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);
}
Run Code Online (Sandbox Code Playgroud)


Kyl*_*yle 5

我想我没有看到库检查null的意义.当然,图书馆不会抛出NPE,但调用者最终将不得不检查它.您上面的乘客会打电话的是什么?它不能只使用输出.在它可以对值做任何事情之前,它必须检查返回的值是否在某个时刻为空.

此外,对于我曾经写过的任何应用程序,null与零有很大不同.我不想使用将null视为零的一个.

如果您的要求是数据库中不允许空值,我会在写入数据库之前检查DAO层中的空值.