本文目录一览:
JAVA 大数值问题
public static void main(String[] args) {
//int的最大数值是2的31次方减1,如果在最大值上继续增加则会从最小值开始,循环下去。
//BigInteger没有最大值,但计算并不是很方便需要使用里面定义的各种方法才可以。
Integer i = new Integer(2147483647);
BigInteger bi = new BigInteger("2147483647");
System.out.println(i+1);
System.out.println(bi.add(BigInteger.ONE));
}
java中如何对较大的数字进行计算
在Java中针对比较大的数字,有大数类型来进行表示。即BigInteger和BigDecimal两个类。
以BigDecimal为例:
BigDecimal bigDecimalA = new BigDecimal("1234567890123456789012345678901");
BigDecimal bigDecimalB = new BigDecimal("1234567890123456789012345678902");
// 加 +
bigDecimalA = bigDecimalA.add(bigDecimalB);
// 减 -
bigDecimalA = bigDecimalA.subtract(bigDecimalB);
// 乘 *
bigDecimalA = bigDecimalA.multiply(bigDecimalB);
// 除 /
bigDecimalA = bigDecimalA.divide(bigDecimalB);
// ......其他的类似,API里很详细,不再赘述了。
java程序 大数值的问题讲解
import java.math.*;
import java.util.*;
这两行是调用API文档中现有的类,其实全称可以按如下的方式写:
import java.math.BigInteger;
import java.util.Scanner;
因为你调用的 BigInteger和Scanner方法是从上面的math和util包中调用的,所以必须指明,否则就会出错。
Scanner in = new Scanner(System.in);
这个是一个要你输入的语句。
在API文档中说明如下:
Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。
例如,以下代码使用户能够从 System.in 中读取一个数:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
再看一个例子,以下代码使 long 类型可以通过 myNumbers 文件中的项分配:
Scanner sc = new Scanner(new File("myNumbers"));
while (sc.hasNextLong()) {
long aLong = sc.nextLong();
}
对于
BigInteger lotteryOdds = BigInteger.valueOf(1);
中的valueOf()方法,这个也是API文档中的,方法如下:
valueOf
public static BigInteger valueOf(long val)返回其值等于指定 long 的值的 BigInteger。提供的此“静态工厂方法”优先于 (long) 构造方法,因为前者允许重用经常使用的 BigInteger。
参数:
val - 要返回的 BigInteger 的值。
返回:
具有指定值的 BigInteger。
-----------------------------------------
以上就是这个程序的关键点,其实没有什么知识点,就是查询java的API文档。
你应该是初学者吧,因为感觉还不会用文档。那你就到网上搜索API文档,有中文和英文的,你下载后就慢慢学习使用,大约40多M。
API文档是你学习java和以后java开发的必需具备的文档。给你举个例子,就你上面的程序,对于BigInteger类和valueOf()这个方法,我开始根本就不知道,但你在了解文档后你就会使用了。在你编程的时候,你需要数学方法,那就一定得去
java.math的包中查找,然后看每个类,这样你就知道用哪个方法了。
记住:没有谁能把API文档中的方法都记住,而且也没有意义去记住。API文档就相当于字典。