一尘不染

检查BigDecimal是否为整数值

java

任何人都可以推荐一种 有效的 方法来确定a是否BigDecimal为数学意义上的整数吗?

目前,我有以下代码:

private boolean isIntegerValue(BigDecimal bd) {
    boolean ret;

    try {
        bd.toBigIntegerExact();
        ret = true;
    } catch (ArithmeticException ex) {
        ret = false;
    }

    return ret;
}

…但是希望在必要时避免创建对象的开销。以前,我使用bd.longValueExact()BigDecimal是如果内部使用紧凑的表示形式则可以避免创建对象,但是如果值太大而无法容纳很长的对象,则显然会失败。

任何帮助表示赞赏。


阅读 1909

收藏
2020-12-03

共1个答案

一尘不染

根据BigDecimal值的来源/用途,首先检查刻度是否小于等于0可能会更快。如果是,那么从数学意义上讲,它绝对是整数。如果是> 0,则它 可能
仍是一个整数值,并将需要更昂贵的测试。

2020-12-03