Java 平方根和++;BigInteger和BigDecimal的运算符

Java 平方根和++;BigInteger和BigDecimal的运算符,java,operator-overloading,operators,biginteger,bigdecimal,Java,Operator Overloading,Operators,Biginteger,Bigdecimal,是否有现成的Java库用于对BigInteger和BigDecimal对象进行操作 我想使用平方根和++运算符 多谢各位 我明白了,应该使用p.S.biginger.add()而不是++。 大整数的平方根呢 是不可变的。这使得像++-操作符这样的操作在概念上不可能实现。您不能更改给定的biginger的值,就像您不能使用String一样 递增 您必须始终创建一个新的biginger,以保存递增的值(当然,您可以将对该biginger的引用存储在同一个变量中) 编辑:正如评论中指出的,“递增”看起

是否有现成的Java库用于对BigInteger和BigDecimal对象进行操作

我想使用平方根和++运算符

多谢各位

我明白了,应该使用p.S.biginger.add()而不是++。 大整数的平方根呢

是不可变的。这使得像
++
-操作符这样的操作在概念上不可能实现。您不能更改给定的
biginger
的值,就像您不能使用
String
一样

递增 您必须始终创建一个新的
biginger
,以保存递增的值(当然,您可以将对该
biginger
的引用存储在同一个变量中)

编辑:正如评论中指出的,“递增”看起来像:

BigInteger result = a.add(BigInteger.ONE);

请注意,这两行不会更改
biginger
的值,而
a
最初指向该值。最后一行创建一个新的BigInteger,并将对它的引用存储在
a

计算平方 您可以这样计算
BigInteger
的平方:

BigInteger a = BigInteger.valueOf(2);
BigInteger a_square = a.multiply(a); // a^2 == a * a

平方根 代码取自。 它使用简单的二分法和巧妙的上界。请注意,
a.shiftRight(x)
相当于
a/2^x
(仅适用于非负数,但这就是我们要处理的全部内容)

使用运算符而不是方法 <>操作符重载(如C++)在java中是不可能的。

< P>是<强>不可变>。这使得像
++
-操作符这样的操作在概念上不可能实现。您不能更改给定的
biginger
的值,就像您不能使用
String
一样

递增 您必须始终创建一个新的
biginger
,以保存递增的值(当然,您可以将对该
biginger
的引用存储在同一个变量中)

编辑:正如评论中指出的,“递增”看起来像:

BigInteger result = a.add(BigInteger.ONE);

请注意,这两行不会更改
biginger
的值,而
a
最初指向该值。最后一行创建一个新的BigInteger,并将对它的引用存储在
a

计算平方 您可以这样计算
BigInteger
的平方:

BigInteger a = BigInteger.valueOf(2);
BigInteger a_square = a.multiply(a); // a^2 == a * a

平方根 代码取自。 它使用简单的二分法和巧妙的上界。请注意,
a.shiftRight(x)
相当于
a/2^x
(仅适用于非负数,但这就是我们要处理的全部内容)

使用运算符而不是方法
<>操作符重载(如C++)在java中是不可能的。< /P>你检查了类的文档吗?是的,很不幸,我没有发现关于平方的问题。BigInteger@sunny如果你看我的答案,你会发现没有必要使用专门的
square()
方法。简单乘法就行了。对不起,我是说平方根。在一个问题中解决了这个问题。你检查过这些类的文档了吗?是的,不幸的是,我没有发现关于从BigInteger@sunny如果你看我的答案,你会发现没有必要使用专门的
square()
方法。简单乘法就行了。对不起,我是说平方根。在一个问题中修复了它以递增
biginger
使用
biginger结果=a.add(biginger.ONE)
thnk you,得到完整的结果,再加上这个平方变量
biginger result=a.pow(2)
增加
biginger
使用
biginger结果=a.add(biginger.ONE)
thnk you,得到完整的结果,再加上这个平方变量
biginger result=a.pow(2)
BigInteger sqrt(BigInteger n) {
    BigInteger a = BigInteger.ONE;
    BigInteger b = n.shiftRight(5).add(BigInteger.valueOf(8));
    while (b.compareTo(a) >= 0) {
        BigInteger mid = a.add(b).shiftRight(1);
        if (mid.multiply(mid).compareTo(n) > 0) {
            b = mid.subtract(BigInteger.ONE);
        } else {
            a = mid.add(BigInteger.ONE);
        }
    }
    return a.subtract(BigInteger.ONE);
}