如何将方程从long转换为Biginteger

时间:2015-06-17 14:07:00

标签: java biginteger

所以我正在做这个需要计算方程的问题。起初我认为long对于范围来说已经足够了,但现在已超过long范围,现在我必须使用BigInteger。我必须转换一个等式,但我无法

这是等式:

count =(n2/n3)-((n1-1)/n3);

计数可以是long,但n1n2n3应为BigInteger

4 个答案:

答案 0 :(得分:5)

这简化为:

-(n1-n2-1)/n3

和Java

BigInteger count = n1
  .subtract(n2)
  .subtract(BigInteger.valueOf(1))
  .negate()
  .divide(n3)

答案 1 :(得分:3)

BigInteger似乎有一个应该能够完成工作的longValue()方法: http://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html

long count = (n2
                .divide(n3))
                .substract( (n1
                .subtract(BigInteger.ONE))
                .divide(n3)
             ).longValue()

答案 2 :(得分:2)

这个 oneliner 应该可以解决这个问题......

long count;
BigInteger n1, n2, n3;
n1 = n2 = n3 = new BigInteger("1231232");

//count =(n2/n3)-((n1-1)/n3);

//count = (n2/n3)
count   = (n2.divide(n3))
        // - 
        .subtract(
            //((n1-1)/n3);
            ((n1.subtract(new BigInteger("1").divide(n3))))
        ).longValue();

答案 3 :(得分:1)

您可以使用BigInteger#valueOf(long val)

    count = (BigInteger.valueOf(n2.intValue()).divide(BigInteger.valueOf(n3.intValue()))).
 subtract(((BigInteger.valueOf(n1.intValue()).
subtract(BigInteger.valueOf(n1.intValue()))).
divide(BigInteger.valueOf(n3.intValue())));