处理非常大的数字
Dealing with extremely large numbers
所以我必须处理非常大的数字。事实上,确切的数字是 18,446,744,073,709,551,616,也就是 2^64。我想我可以把它写成 2^64,但是我要从中减去数字并除以其他任何东西,而且我的一些计算也可能是 quintillions。我尝试像这样在它的末尾添加 "L":
public int total = 18446744073709551616L;
但是,它仍然给我同样的错误,因为整数太大了。我不确定这是否是因为我输入错误或者即使使用 'L' 它仍然太大。有什么解决办法吗?我绝对愿意花费一点处理能力或增加额外的运行时间,只要它能工作。谢谢!
您可以使用 java.math.BigInteger
.
使用 new BigInteger("18446744073709551616")
.
从字符串创建 BigInteger
您可以通过调用add
、subtract
、multiply
、divide
和mod
等方法进行数学运算。您不能使用 +
、-
、*
、/
、%
运算符,因为它们仅适用于基本类型(而 +
适用于字符串).
我相信在你的情况下只有 BigInteger 或 BigDecimal 是解决方案。
所以我必须处理非常大的数字。事实上,确切的数字是 18,446,744,073,709,551,616,也就是 2^64。我想我可以把它写成 2^64,但是我要从中减去数字并除以其他任何东西,而且我的一些计算也可能是 quintillions。我尝试像这样在它的末尾添加 "L":
public int total = 18446744073709551616L;
但是,它仍然给我同样的错误,因为整数太大了。我不确定这是否是因为我输入错误或者即使使用 'L' 它仍然太大。有什么解决办法吗?我绝对愿意花费一点处理能力或增加额外的运行时间,只要它能工作。谢谢!
您可以使用 java.math.BigInteger
.
使用 new BigInteger("18446744073709551616")
.
您可以通过调用add
、subtract
、multiply
、divide
和mod
等方法进行数学运算。您不能使用 +
、-
、*
、/
、%
运算符,因为它们仅适用于基本类型(而 +
适用于字符串).
我相信在你的情况下只有 BigInteger 或 BigDecimal 是解决方案。