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

Java,比较BigInteger值

黄锋
2023-03-14
问题内容

BigInteger bigInteger = …;

if(bigInteger.longValue() > 0) {  //original code
    //bigger than 0
}

//should I change to this?
if(bigInteger.compareTo(BigInteger.valueOf(0)) == 1) {
    //bigger than 0
}

我需要比较一些任意的BigInteger值。我想知道哪种方法是正确的。鉴于以上代码,应使用哪一个?原始代码在顶部。我正在考虑将其更改为第二种方法。


问题答案:

如果要测试BigInteger是否具有正值,则第一种方法是错误的:longValue仅返回 低阶64位
,这可能会还原符号…因此,对于正的BigInteger,测试可能会失败。

另一种选择:如果值为正,则BigInteger#signum返回1

if (bigInteger.signum() == 1) {
 // bigger than 0
}


 类似资料:
  • 本文向大家介绍Java比较BigDecimals,包括了Java比较BigDecimals的使用技巧和注意事项,需要的朋友参考一下 示例 该方法compareTo应用于比较BigDecimals: 通常,你应该不使用equals,因为它考虑两个方法BigDecimals只相当于,如果他们在价值相等,也扩展:            

  • 问题内容: 假设我有一对班 我希望先按第一个值排序,然后再按第二个值排序。现在,如果我这样做 一切正常,列表按对的第一个值排序,但是如果我这样做 它因错误而失败 好的,所以它可能无法推断参数,所以如果我这样做 它因错误而失败 为什么它对compare()而不是compare()。thenComparing()有效? 问题答案: 该错误似乎与的通用参数有关。一种解决方法是尝试使用显式类型: 请注意,

  • 问题内容: 我在BigInteger的.Net项目Mono实现中使用(链接)。在Java中,我使用java.math.BigInteger。 相同的代码在Java中产生不同的结果。 .Net代码 Java代码。相同的inputBytes数组,相同的指数和模数,但结果不同。 我不明白为什么结果不同。 PS,例如,如果我使用InputBytes Java和.Net中的结果相同 魔术在哪里? 问题答案:

  • 问题内容: Comparable和Comparator之间的主要区别是什么。 在什么情况下,哪个比另一个优先? 问题答案: 当你的类实现时,该类的方法将定义该对象的“自然”顺序。根据合同,该方法有义务(尽管不要求)与该对象上的其他方法保持一致,例如,当比较返回true 时,应始终为对象返回0 。 一个比较本身就是如何比较两个对象的定义,可用于可能不与自然顺序排列的方式来比较的对象。 例如,字符串通

  • 我的任务是用java编写mergesort,任务还规定我不能使用整数,我必须使用可比较的整数。这是我第一次使用java。我的问题是在合并函数内比较两个comp int数组中的元素。我尝试了if(list[I])compareTo(list2[j]),但compareTo只能取整数。任何帮助都将不胜感激