是否有一个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.
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)
我想我没有看到库检查null的意义.当然,图书馆不会抛出NPE,但调用者最终将不得不检查它.您上面的乘客会打电话的是什么?它不能只使用输出.在它可以对值做任何事情之前,它必须检查返回的值是否在某个时刻为空.
此外,对于我曾经写过的任何应用程序,null与零有很大不同.我不想使用将null视为零的一个.
如果您的要求是数据库中不允许空值,我会在写入数据库之前检查DAO层中的空值.
| 归档时间: |
|
| 查看次数: |
68265 次 |
| 最近记录: |