相关疑难解决方法(0)

检查BigDecimal是否为整数值

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

目前我有以下代码:

private boolean isIntegerValue(BigDecimal bd) {
    boolean ret;

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

    return ret;
}
Run Code Online (Sandbox Code Playgroud)

...但是如果有必要,我希望避免对象创建开销.以前我正在使用bd.longValueExact()哪个会避免创建一个对象,如果BigDecimal它在内部使用它的紧凑表示,但显然会失败如果值太大而不适合长.

任何帮助赞赏.

java bigdecimal

46
推荐指数
5
解决办法
3万
查看次数

为什么新的BigDecimal("0.0").stripTrailingZeros()的比例为1?

运行这个简单的程序:

public static void main(final String... args)
{
    System.out.println(BigDecimal.ZERO.scale());
    System.out.println(new BigDecimal("0").scale());
    System.out.println(new BigDecimal("0.0").stripTrailingZeros().scale());
    System.out.println(new BigDecimal("1.0").stripTrailingZeros().scale());
}
Run Code Online (Sandbox Code Playgroud)

输出:

0
0
1
0
Run Code Online (Sandbox Code Playgroud)

我的问题很简单:为什么不是第三个println输出0?那似乎合乎逻辑......

编辑:好的,所以,这是一个非常古老的错误:

错误链接

事实上,它"适用于"任意数量的零:new BigDecimal("0.0000").stripTrailingZeroes().scale()是4!

java bigdecimal

17
推荐指数
1
解决办法
6844
查看次数

标签 统计

bigdecimal ×2

java ×2