在用C或者C++处理大数时感觉非常麻烦,但是在Java中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类,至于两个类的对象能表示最大范围不清楚,理论上能够表示无线大的数,只要计算机内存足够大。
这两个类都在java.math.*包中,因此每次必须在开头处引用该包。
自我感觉有时候用JAVA AC题比C/C++还要快,java内部有功能强大的内部类,NICE!
整数的运算 BigInteger
小数的运算 BigDecimal
BIgInteger:
Ⅰ基本函数:
1.valueOf(parament); 将参数转换为制定的类型
比如 int a=3;
BigInteger b=BigInteger.valueOf(a);
则b=3;
String s=”12345”;
BigInteger c=BigInteger.valueOf(s);
则c=12345;
2.add(); 大整数相加
BigInteger a=new BigInteger(“23”);
BigInteger b=new BigInteger(“34”);
a. add(b);
3.subtract(); 相减
4.multiply(); 相乘
5.divide(); 相除取整
6.remainder(); 取余
7.pow(); a.pow(b)=a^b
8.gcd(); 最大公约数
9.abs(); 绝对值
10.negate(); 取反数
11.mod(); a.mod(b)=a%b=a.remainder(b);
12.max(); min();
13.punlic int comareTo();
14.boolean equals(); 是否相等
15.BigInteger构造函数:
一般用到以下两种:
BigInteger(String val);
附题一道,供大家理解:
import java.math.BigInteger;
import java.util.Scanner;
/**
* @author
* @date 2018/11/21 - 16:34
*/
public class Main3 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()){
String str = in.next();
int len = str.length();
char arr[] = new char[len];
int a=0;
for (int i = 0; i < len; i++) {
arr[i]=str.charAt(i);
if(arr[i]=='+'||arr[i]=='-'||arr[i]=='*'||arr[i]=='/'){
a=i;
}
}
String str1 = null,str2=null;
str1=str.substring(0,a);
str2=str.substring(a+1,len);
BigInteger b=new BigInteger(str1);
BigInteger c= new BigInteger(str2);
switch (arr[a]){
case '+': System.out.println(b.add(c));break;
case '-': System.out.println(b.subtract(c));break;
case '*': System.out.println(b.multiply(c));break;
case '/': System.out.println(b.divide(c));break;
}
}
}
}