package com.common.string;
import java.math.BigDecimal;
/**
* @ClassName: Demo5
* @Author: 南冥有猫不须铭
* @Date: 2021/6/28-15:19
* @Description: BigDecimal的使用
*/
public class Demo5 {
public static void main(String[] args) {
double d1 = 1.0; //double类型 和 float类型在内存中存储的是一个近似值,经过计算后得出的结果有误差
double d2 = 0.9;
System.out.println(d1-d2);//0.09999999999999998 (不是1.0-0.9=0.1)
//面试题
double result = (1.4-0.5)/0.9;
System.out.println(result);//0.9999999999999999 (不是1)
//BigDecimal,大的浮点数精确计算
BigDecimal bd1 = new BigDecimal("1.0");//这里括号里填的一定要是字符串,否则数据可能还是近似值
BigDecimal bd2 = new BigDecimal("0.9");
//减法
BigDecimal r1 = bd1.subtract(bd2);//减法:r1=bd1-bd2
System.out.println(r1);//0.1
//加法
BigDecimal r2 = bd1.add(bd2);
System.out.println(r2);//1.9
//乘法
BigDecimal r3 = bd1.multiply(bd2);
System.out.println(r3);//0.90
//除法
BigDecimal r4 = new BigDecimal("1.4").subtract(new BigDecimal("0.5")).divide(new BigDecimal("0.9"));
System.out.println(r4);//1 (1.4-0.5)/0.9=1
//除法除不尽的情况
BigDecimal r5 = new BigDecimal("10").divide(new BigDecimal("3"),2,BigDecimal.ROUND_UP);//10除以3,保留两位小数,四舍五入
System.out.println(r5);//3.34 除不尽,会报异常 ArithmeticException,但是选择保留小数和四舍五入后可以正常计算
}
}
BigDecimal的使用
最新推荐文章于 2024-11-13 20:43:20 发布