栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352227.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号