如何使用大整数的a%b
? 像%java中的BigInteger运算符
...
BigInteger val = new BigInteger("1254789363254125");
...
boolean odd(val){
if(val%2!=0)
return true;
return false;
...
Eclipse中说,操作符%是未定义的BigInteger。
任何想法?
如何使用大整数的a%b
? 像%java中的BigInteger运算符
...
BigInteger val = new BigInteger("1254789363254125");
...
boolean odd(val){
if(val%2!=0)
return true;
return false;
...
Eclipse中说,操作符%是未定义的BigInteger。
任何想法?
像这样:
BigInteger val = new BigInteger("1254789363254125");
public boolean odd(BigInteger val) {
if(!val.mod(new BigInteger("2")).equals(BigInteger.ZERO))
return true;
return false;
}
或者作为用户邓肯的评论所说,我们可以完全取出的if语句,像这样:
BigInteger val = new BigInteger("1254789363254125");
public boolean odd(BigInteger val) {
return !val.mod(new BigInteger("2")).equals(BigInteger.ZERO));
}
如果val%2 == 0它的偶数,不奇怪。 – 2012-07-20 20:13:17
谢谢,忘了感叹号。 – jrad 2012-07-20 20:15:01
不需要if语句,只需要'return!val.mod(new BigInteger(“2”))。equals(BigInteger.ZERO);'。 – 2015-02-03 08:47:54
使用val.mod(2)。
BigInteger是一个对象。您不能在对象上使用算术运算符,它只适用于基元。
%仅适用于java.lang.Integer,因为这是隐式强制转换(实际上称为unboxed)为int。但BigInteger无法拆箱。 unboxing/baxing(这意味着对象到基元/基元到对象的转换)只适用于int,float,double,short和byte。
由于BigInteger的是一类,而不是原始* 1,您不要使用它。检查BigInteger的方法:http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigInteger.html#mod(java.math.BigInteger)
* 1:以整数的情况下,浮动,您可以使用运营商,因为JVM会自动的对象(自动装箱)转换成其原始值
一个更有效的方法是检查最后一位。如果是0
(又名false
),则数字为偶数,否则为奇数。
public boolean odd(BigInteger i){
return i.testBit(0);
}
odd(BigInteger.valueOf(1));//true
odd(BigInteger.valueOf(2));//false
odd(BigInteger.valueOf(101));//true
odd(BigInteger.valueOf(100));//false
另外它的较少的代码行。
我会使用类BigInteger的方法remainder这样:
BigInteger result = a.remainder(b);
分配是由于事实的BigInteger是不变的,所以不会被方法改变。
看看BigInteger javadoc中的'mod'函数。 – 2012-07-20 19:59:25