java中的BigDemcimal
用于小数的精确运算
构造方法:
BigDecimal(String val)
四则运算:
add(BigDecimal b):加法
subtract(BigDecimal b):减法
multiply(BigDecimal b):乘法
divide(BigDecimal b):除法
参考代码:
package com.itheima;
import java.math.BigDecimal;
/*
基本使用:用于小数的精确计算
*/
public class BigDecimalDemo01 {
public static void main(String[] args) {
//double、float只是用于科学计算,但是不够精确
System.out.println(0.1 + 0.2); //0.3
System.out.println(0.1 - 0.2); //-0.1
System.out.println(0.1 * 0.2); //0.02
System.out.println(0.1 / 0.2); //0.5
System.out.println("----------");
//使用BigDecimal类解决
BigDecimal bd1 = new BigDecimal("0.1");
BigDecimal bd2 = new BigDecimal("0.2");
System.out.println(bd1.add(bd2));
System.out.println(bd1.subtract(bd2));
System.out.println(bd1.multiply(bd2));
System.out.println(bd1.divide(bd2));
}
}
除法运算遇到除不尽时:
public BigDecimal divide(另一个BigDecimal对象,精确几位,舍人模式)
RoundingMode.UP:进一法
RoundingMode.FLOOR:去尾法
ROundingMode.HALF_UP:四舍五入
参考代码:
package com.itheima;
import java.math.BigDecimal;
import java.math.RoundingMode;
/*
除法运算:
public BigDecimal divide(另一个BigDecimal对象,精确几位,舍人模式)
RoundingMode.UP:进一法
RoundingMode.FLOOR:去尾法
RoundingMode.HALF_UP:四舍五入
*/
public class BigDecimalDemo02 {
public static void main(String[] args) {
//使用BigDecimal类解决
BigDecimal bd1 = new BigDecimal("10.0");
BigDecimal bd2 = new BigDecimal("3.0");
// System.out.println(bd1.divide(bd2)); //除不尽
/*
参数1:表示参与计算的BigDecimal对象
参数2:表示小数点后面精确多少位
参数3:舍入模式
*/
System.out.println(bd1.divide(bd2, 2, RoundingMode.UP));
System.out.println(bd1.divide(bd2, 2, RoundingMode.FLOOR));
System.out.println(bd1.divide(bd2, 2, RoundingMode.HALF_UP));
}
}
标签:Java,BigDecimal,浮点数,37,System,bd1,bd2,println,out
From: https://www.cnblogs.com/fragmentary/p/17032194.html