数字的任何数字的总和

时间:2014-03-04 10:39:56

标签: java operators

我认为这个问题很简单,但我想知道如何在java中加总任何数字。

如果我们向MAX_VALUE添加任何no,则有特定范围的数据类型,它会打印-ve no。

例如12344587387873878 + 374892 = ?

任何逻辑。

2 个答案:

答案 0 :(得分:2)

您可以使用BigInteger

查看BigInteger班。

此外,您可以自己实现。

见这里:

How would i add very large Numbers represented as Strings i.e 50 digit numbers

答案 1 :(得分:1)

如果您要存储 任何 号码(从技术上讲,您的示例可能很长),您需要使用BigDecimal 。如果您知道您的总和将是一个整数,也可以使用BigInteger

BigDecimal示例;

BigDecimal bigD1 = new BigDecimal(1234458738787.387*1000);
BigDecimal bigD2 = new BigDecimal(374892.5);
System.out.println(bigD1.add(bigD2));

输出: 1234458739162279.5

由于12344587387873878太大而无法存储为整数,因此无法将其作为文字(所有非浮点文字都是隐式整数)输入到BigDecimal构造函数中。所以我自己将它除以1000,然后在构造函数中将其除以*1000。或者,您可以使用科学记数法。

OR ,您可以将BigDecimal传递给字符串。

BigDecimal bigD1 = new BigDecimal("1234458738787387");

作为警告,BigDecimal确实存在非常高精度数字的问题。它无法准确地表示Pi,甚至不能代表1/3。