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();
  }
}
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务