• 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();
    
        }
    
    }
     
  • 相关阅读:
    The Dole Queue
    [ACM] 九度OJ 1553 时钟
    秘密:之所以不搞军事同盟,俄罗斯
    炮塔郝梦主solo
    男性在下一100层【第三层】——高仿手机银行client接口
    C# 它 抽象类和接口
    PO经批准的订单API
    XDU 1284 寻找礼物
    android JSON数据格式 解析
    select的种种取值
  • 原文地址:https://www.cnblogs.com/ygh1229/p/5800001.html
Copyright © 2020-2023  润新知