JAVA
BigDecimal的运算——加减乘除
BigDecimal num1 = new BigDecimal("0.005"); 如果传值而不是传字符串会丢失精度
加法 函数
减法函数
乘法函数
除法函数
绝对值函数
BigInteger的运算
package ustc.lichunchun.bigdataapi;
import java.math.BigInteger;
public class BigIntegerDemo1 {
public static void main(String[] args) {
BigInteger bi1 = new BigInteger("123456789") ; // 声明BigInteger对象
BigInteger bi2 = new BigInteger("987654321") ; // 声明BigInteger对象
System.out.println("加法操作:" + bi2.add(bi1)) ; // 加法操作
System.out.println("减法操作:" + bi2.subtract(bi1)) ; // 减法操作
System.out.println("乘法操作:" + bi2.multiply(bi1)) ; // 乘法操作
System.out.println("除法操作:" + bi2.divide(bi1)) ; // 除法操作
System.out.println("最大数:" + bi2.max(bi1)) ; // 求出最大数
System.out.println("最小数:" + bi2.min(bi1)) ; // 求出最小数
BigInteger result[] = bi2.divideAndRemainder(bi1) ; // 求出余数的除法操作
System.out.println("商是:" + result[0] +
";余数是:" + result[1]) ;
}
} 注意:
System.out.println()中的数字默认是double类型的,double类型小数计算不精准。
使用除法函数在divide的时候要设置各种参数,要精确的小数位数和舍入模式,不然会出现报错:其他大佬博客
输入
import java.util.*;
import java.math.*;
public class Main {
public static void main(String[] args) {
//创建Scanner对象,接受从控制台输入
Scanner cin=new Scanner(System.in);
//接受String类型
String a,b;
//输出结果
while (cin.hasNext()) {
a = cin.next();
b = cin.next();
BigDecimal a1=new BigDecimal(a);
BigDecimal a2=new BigDecimal(b);
System.out.println(a1.add(a2));
System.out.println(a1.multiply(a2));
}
cin.close();
}
} 输入
循环输入
Scanner cin=new Scanner(System.in);
//接受String类型
String a,b;
//输出结果
while (cin.hasNext()) {
a = cin.next();
b = cin.next();
BigDecimal a1=new BigDecimal(a);
BigDecimal a2=new BigDecimal(b);
System.out.println(a1.add(a2));
System.out.println(a1.multiply(a2));
}
cin.close(); 字符串读入一行再转化明显快于单个读入
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner read = new Scanner(System.in);
int n = read.nextInt();
read.nextLine();
double ans=0.0, a1=-1, a2=1e18, x;
String[] line = read.nextLine().split(" ");
for (String str : line) {
x=Double.parseDouble(str);// Double.parseDouble(str)是把String字符串转换成Double的封装类
ans+=x;
if(x>a1) a1=x;
else if(x<a2) a2=x;
}
System.out.println(String.format("%.2f", (ans - a1 - a2) / (n - 2)));
read.close();
}
} 
