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(); } }