009—JAVA中整型和浮点型的精度问题

BigInteger: 用于存储过大的整数(弥补整型存储数据不足的限制)

import org.junit.Test;

import java.math.BigInteger;

public class TestBigInteger {
    @Test
    public void test03(){
        int m = 20;
        int n = 10;
        System.out.println("(m + n) = " + (m + n));
        //创建两个BigInteger类型的对象
        BigInteger b1 = new BigInteger("10");
        BigInteger b2 = new BigInteger("20");
        BigInteger add = b1.add(b2);
        System.out.println("加法 add = " + add);
        BigInteger subtract = b2.subtract(b1);
        System.out.println("减法 substrct" + subtract);
        BigInteger multiply = b1.multiply(b2);
        System.out.println("乘法 multiply = " + multiply);
        BigInteger divide = b1.divide(b2);
        System.out.println("除法 divide = " + divide);
        BigInteger remainder = b1.remainder(b2);
        System.out.println("取模 remainder = " + remainder);

        //将BigInteger ----> int
        int i = b2.intValue();
        System.out.println("i = " + i);
    }

    @Test
    public void test2(){
        //创建BigInteger对象
        BigInteger big1 = new BigInteger("12345678909876543212345678");
        System.out.println("big1 = " + big1);
    }
    @Test
    public void test3(){

        long l = 123123455;
        System.out.println("l = " + l);
        long l1 =  922_3372_0368_5477_5807L;
        System.out.println("l1 = " + l1);
    }
}

BigDecimal:
        更加精确的小数

    1.创建对象

    2.数学操作  加减乘除

    注意:
        如果是无限小数  1. 指定 保留的小数位数
                      2. 确定 舍入模式
                b1.divide(b2,保留的小数位数 ,舍入模式);

public class BigDecimalTest {
    @Test
    public void test4(){

        BigDecimal b1 = new BigDecimal("10.0");
        BigDecimal b2 = new BigDecimal("3.0");
        // RoundingMode  摄入模式 可以使用 RoundingMode.的方式调用不同的方法
        BigDecimal divide = b1.divide(b2, 200, RoundingMode.FLOOR);
        System.out.println("divide = " + divide);

    }
    
    @Test
    public void test3(){
        //创建对象
        BigDecimal b1 = new BigDecimal("10.0");
        BigDecimal b2 = new BigDecimal("5.0");
        //数字操作
        System.out.println("加法 b1.add(b2) = " + b1.add(b2));
        System.out.println("减法 b1.subtract(b2) = " + b1.subtract(b2));
        System.out.println("乘法 b1.multiply(b2) = " + b1.multiply(b2));
        System.out.println("除法 b1.divide(b2) = " + b1.divide(b2));
        System.out.println("取模 b2.remainder(b1) = " + b2.remainder(b1));
        // BigDecimal---> double
        double doubleValue = b1.doubleValue();
        System.out.println("doubleValue = " + doubleValue);

    }
    @Test
    public void test2(){
        BigDecimal bigDecimal = new BigDecimal("3.333333333333333333333333333333");
        System.out.println("bigDecimal = " + bigDecimal);

    }
    @Test
    public void test1(){
        //精度不够超过了double类型存储的最大值
        double d = 3.3333333333333333333333;
        System.out.println("d = " + d);
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值