在Java中,大多数基本类型都是带符号的(一个比特用于表示+/-),因此当我超过类型的限制时,可能会得到意外的结果,例如负数。
是否有比使用BigInteger更好的解决方案?因为BigInteger存在性能问题,而且需要使用类方法来进行基本算术运算,而不是语言操作符(破坏代码可读性)。
在Java中,大多数基本类型都是带符号的(一个比特用于表示+/-),因此当我超过类型的限制时,可能会得到意外的结果,例如负数。
是否有比使用BigInteger更好的解决方案?因为BigInteger存在性能问题,而且需要使用类方法来进行基本算术运算,而不是语言操作符(破坏代码可读性)。
不,没有更好的解决方案。如果您正在处理无法适应长整型或双精度浮点数的值,则需要使用诸如BigInteger
之类的引用类型,并且Java不支持运算符重载。
从技术上讲,我想您可以在有符号和无符号值之间进行一些映射,但如果您的目标是编写干净简单的代码,则这绝不是正确的方法。
long
和 BigInteger
之间应该有一些东西。BigInteger
太过笨重了。 - PacerierScala在这里真的是解决方案。在这种语言中,“运算符”实际上只是中缀方法,并且可以为任意类定义。事实上,在您的情况下,它们已经在标准库中了。因此,您可以拥有特殊数字表示的强大功能,但具有Java基本类型的清晰语法。
Scala经过了实战考验,并且将与您的Java代码完全互操作。
仍然拥有美丽的业务逻辑的唯一方法是使用脚本语言,将其编译为Java类。在内部,您可以使用BigIntegers。