当前位置: 首页 > 面试题库 >

检查BigDecimal是否为整数值

齐永昌
2023-03-14
问题内容

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

目前,我有以下代码

private boolean isIntegerValue(BigDecimal bd) {
    boolean ret;

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

    return ret;
}

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

任何帮助表示赞赏。


问题答案:

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



 类似资料:
  • 问题内容: 如何检查Java整数是否为另一个数字的倍数?例如,if 是4的倍数。 问题答案: 使用余数运算符(也称为模运算符),该运算符返回除法的余数,并检查其是否为零:

  • 问题内容: 如何检查变量是否为整数? 问题答案: 如果你需要这样做,请执行 除非你使用的是Python 2.x,否则需要 不要使用type。在Python中,这几乎永远不是正确的答案,因为它阻止了多态性的所有灵活性。例如,如果你子类化int,则你的新类应注册为int,但type不会这样做: 这符合Python强大的多态性:你应该允许行为类似于的任何对象int,而不是强制将其作为一个对象。 BUT

  • 问题内容: 我试图找到最大的立方根,即整数,小于12,000。 我不确定如何检查它是否是整数!我可以将其转换为字符串,然后使用索引来检查最终值,看看它们是否为零,但这似乎很麻烦。有没有更简单的方法? 问题答案: 要检查浮点值是否为整数,请使用以下方法: 该方法已添加到Python 2.6中的类型中。 请考虑在Python 2中为(整数操作数的底数除法!),并且浮点算术可能不精确(a是使用二进制分数

  • 问题内容: 我需要检查值是否为整数。我发现了这一点:如何检查输入值是整数还是浮点数?,但如果我没记错的话,即使 值 本身确实是,变量仍然是类型。 问题答案: 如果输入值可以是整数以外的其他数字形式,请按 如果传递字符串值, 请使用,请确保在转换失败的情况下使用try catch进行错误处理。

  • 问题内容: 是否有任何方法或快速方法来检查Java中数字是否为整数(属于Z字段)? 我考虑过从四舍五入的数字中减去它,但是我没有找到任何可以帮助我解决这个问题的方法。 我应该在哪里检查?整数Api? 问题答案: 又快又脏… 编辑:假设x已经是其他数字形式。如果要处理字符串,请查看。

  • 问题内容: 我看到在MySQL中,有和函数可以从值创建整数,但是有什么方法可以检查值是否是整数?我正在寻找PHP中类似的东西。 问题答案: 我假设您要检查一个字符串值。一种不错的方法是REGEXP运算符,将字符串与正则表达式匹配。简单地做 这相当快。如果您的字段是数字,则只需测试 代替。