BigInteger和BigDecimal的练习

前言:

    BigInteger用于处理大数据的计算,它继承自java.math.BigInteger。用法相对来说比较简单,掌握几个基本运算即可。

  • 初始化: BigInteger sum=new BigInteger("0");
  • 加法:sum=sum.add(n1);   //这里sum和n都为BigInteger类型
  • 减法:sum=sum.subtract(n1);
  • 乘法:sum=sum.multiply(n1);
  • 除法:sum=sum.divide(n1);
  • 幂运算:sum=sum.pow(10);
  • 取相反数:sum=sum.negate();

   同理,BigDecimal是处理浮点数的大数据运算,继承自java.math.BigDecimal。

  • 初始化: BigDecimal num1=new BigDecimal("1234.56453324");
  • 加法:sum=sum.add(n1);   //这里sum和n都为BigDecimal类型
  • 减法:sum=sum.subtract(n1);
  • 乘法:sum=sum.multiply(n1);
  • 除法:sum=sum.divide(n1);
  • 将BigDecimal类型转换为double类型:num1.doubleValue();
  • 比较大小:num1.compareTo(num2);  //小于 时,返回 -1  ;  等于 时,返回 0  ; 大于 时,返回 1  。
  • 四舍五入处理:  num1.divide(num2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();  //scale表示保留几位小数

练习1:

  BigInteger的加法运算:输入以0结尾

输入例子:
123456789012345678901234567890
123456789012345678901234567890
123456789012345678901234567890
0
输出例子:
370370367037037036703703703670

代码如下:
import java.math.BigInteger;
import java.util.Scanner;

public class Integer_Inquiry {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        BigInteger sum=new BigInteger("0");
        while(in.hasNext()){
            String str=in.next();
            if(str.equals("0")){
                System.out.println(sum);
                sum=new BigInteger("0");
            }
            BigInteger n=new BigInteger(str);
            sum=sum.add(n);
        }
        in.close();

    }

}

 

 练习2:BigDecimal加法练习:
输入描述:

对于每组案例,第1行是测试数据的组数n,每组测试数据占2行,分别是两个加数。
每组测试数据之间有一个空行,每行数据不超过100个字符


输出描述:

每组案例是n行,每组测试数据有一行输出是相应的和。
输出保证一定是一个小数部分不为0的浮点数
 
输入例子:

2
0.111111111111111111111111111111
0.111111111111111111111111111111

10000000.655555555555555555555555555555
1.444444444444444444444444444445
 
输出例子:

0.222222222222222222222222222222
10000002.1

import java.math.BigDecimal;
import java.util.Scanner;

public class 浮点数加法 {

    public static void main(String[] args) {
        Scanner in= new Scanner(System.in);
        int n = in.nextInt();
        
        while(n>0){
            BigDecimal num1=new BigDecimal(in.next());
            BigDecimal num2=new BigDecimal(in.next());
            System.out.println(num1.add(num2).doubleValue());
            n--;
//            if(n>0){
//                if(!in.next().equals("")){
//                    System.out.println("输入格式错误");
//                    break;
//                }
//            }
        }
        in.close();

    }

}

 

 
posted @ 2016-08-23 16:41  华不摇曳  阅读(1408)  评论(0编辑  收藏  举报