大数
外观
< Java 编程
浏览 语言基础 主题: ) |
具有最大值范围的整数基本类型是long
,范围从 -263 到 263-1。如果你需要更大或更小的值,你必须使用java.math
包中的BigInteger
类。一个BigInteger
对象可以表示任何整数(只要计算机的内存能容纳),因为它没有映射到任何基本类型。同样地,你需要使用BigDecimal
类来表示较大的小数。
然而,由于这些操作比基本类型要慢得多,所以建议在可能的情况下使用基本类型。
BigInteger
[edit | edit source]BigInteger
类表示几乎任意大小的整数。与其他对象一样,需要构造它们。与普通数字不同,BigInteger
表示一个不可变对象 - BigInteger
类中使用的方法将返回一个新的BigInteger
副本。
要实例化一个BigInteger
,你可以从字节数组或字符串创建它。例如
代码节 3.23:1018,或者说 10 亿亿。太大而无法放入一个 long。
BigInteger i = new BigInteger("1000000000000000000");
|
BigInteger
不能使用正常的Java 运算符。它们使用类提供的函数。
代码节 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));
|
代码节 3.25:转换。
BigInteger aBigInteger = new BigInteger("3");
long aLong = aBigInteger.longValue();
|
BigDecimal
[edit | edit source]BigInteger
类不能处理小数。BigDecimal
类表示任意精度的浮点数。它由一个BigInteger
和一个比例值(由一个 32 位整数表示)组成。