跳转到内容

大数

75% developed
来自维基教科书,开放的书籍,开放的世界

浏览 语言基础 主题:v  d  e )


具有最大值范围的整数基本类型是long,范围从 -263 到 263-1。如果你需要更大或更小的值,你必须使用java.math包中的BigInteger类。一个BigInteger对象可以表示任何整数(只要计算机的内存能容纳),因为它没有映射到任何基本类型。同样地,你需要使用BigDecimal类来表示较大的小数。

然而,由于这些操作比基本类型要慢得多,所以建议在可能的情况下使用基本类型。

BigInteger

[edit | edit source]

BigInteger类表示几乎任意大小的整数。与其他对象一样,需要构造它们。与普通数字不同,BigInteger表示一个不可变对象 - BigInteger类中使用的方法将返回一个新的BigInteger副本。

要实例化一个BigInteger,你可以从字节数组或字符串创建它。例如

Example 代码节 3.23:1018,或者说 10 亿亿。太大而无法放入一个 long。
BigInteger i = new BigInteger("1000000000000000000");

BigInteger 不能使用正常的Java 运算符。它们使用类提供的函数。

Example 代码节 3.24:乘法和加法。
BigInteger a = new BigInteger("3");
BigInteger b = new BigInteger("4");

// c = a^2 + b^2
BigInteger c = a.multiply(a).add(b.multiply(b));

可以将它转换为long,但long可能不够大。

Example 代码节 3.25:转换。
BigInteger aBigInteger = new BigInteger("3");
long aLong = aBigInteger.longValue();

BigDecimal

[edit | edit source]

BigInteger类不能处理小数。BigDecimal类表示任意精度的浮点数。它由一个BigInteger和一个比例值(由一个 32 位整数表示)组成。


Clipboard

待办事项
添加一些类似于变量中的练习


华夏公益教科书