在Java中,大多数基本类型都是带符号的(一位用于表示+/-),因此当我超出类型的限制时,我会得到意外的结果,例如负数。
有什么比使用BigInteger更好的解决方案了,因为BigInteger存在性能问题,并且您需要对基本算术使用类方法而不是语言运算符(以提高可读性)?
不,没有更好的解决方案。如果您使用的值不能为长整型或双精度型,那么您将需要使用诸如的引用类型BigInteger
,并且Java不支持运算符重载。
从技术上讲,我想您可以在有符号值和无符号值之间进行一些映射,但是如果您的目标是简洁明了的代码,那么这绝不是可行的方法。
描述 (Description) java.math.BigInteger.modPow(BigInteger exponent, BigInteger m)返回一个BigInteger,其值为(this exponent mod m)。 与pow不同,此方法允许负指数。 声明 (Declaration) 以下是java.math.BigInteger.modPow()方法的声明。 public
描述 (Description) java.math.BigInteger.xor(BigInteger val)返回一个BigInteger,其值为(this ^ val)。 当且仅当this和val中的一个为负时,此方法返回负BigInteger。 声明 (Declaration) 以下是java.math.BigInteger.xor()方法的声明。 public BigInteger xo
描述 (Description) java.math.BigInteger.subtract(BigInteger val)返回一个BigInteger,其值为(this - val)。 声明 (Declaration) 以下是java.math.BigInteger.subtract()方法的声明。 public BigInteger subtract(BigInteger val) 参数 (
描述 (Description) java.math.BigInteger.remainder(BigInteger val)返回一个BigInteger,其值为(this%val)。 声明 (Declaration) 以下是java.math.BigInteger.remainder()方法的声明。 public BigInteger remainder(BigInteger val) 参数
描述 (Description) java.math.BigInteger.or(BigInteger val)返回一个BigInteger,其值为(this | val)。 当且仅当this或val为负时,此方法返回负BigInteger。 声明 (Declaration) 以下是java.math.BigInteger.or()方法的声明。 public BigInteger or(BigIn
描述 (Description) java.math.BigInteger.multiply(BigInteger val)返回一个BigInteger,其值为(this * val)。 声明 (Declaration) 以下是java.math.BigInteger.multiply()方法的声明。 public BigInteger multiply(BigInteger val) 参数 (