BigDecimal 类是一个算术运算类,它可以给浮点类型的运算控制算术精度,但是要注意在创建对象是入参字符串类型的数据
记得导包 java.math.BigDecimal
import java.math.BigDecimal;
/**
* @author Lantzrung
* @date 2022年7月18日
* @Description
*/
public class BigDecimalDemo {
public static void main(String[] args) {
double item1 = 12.58794654;
float item2 = 3.582145f;
// 9.00580154
// 9.00580657112793
System.out.println(item1 - item2);
// 使用BigDecimal 创建对象时要注意提供字符串
// BigDecimal b1 = new BigDecimal(item1);
// BigDecimal b2 = new BigDecimal(item2);
BigDecimal b1 = new BigDecimal("12.58794654");
// BigDecimal b2 = new BigDecimal("3.582145f");//float类型不兼容double
// java.lang.NumberFormatException
BigDecimal b2 = new BigDecimal("3.582145");// 9.00580154
// 算术
BigDecimal res1 = b1.subtract(b2);// 减法操作
System.out.println(res1.doubleValue());
BigDecimal res2 = b1.add(b2);// 加法操作
System.out.println(res2.doubleValue());
BigDecimal res3 = b1.multiply(b2);// 乘法操作
System.out.println(res3.doubleValue());
BigDecimal res4 = b1.divide(b2);// 除法操作
System.out.println(res4.doubleValue());
//除法操作一定要注意被除数的小数点不能太多,要是太多就用下列方法进行转换
/*
* public static double div(double v1,double v2){
* BigDecimal b1 = BigDecimal.valueOf(v1);
* BigDecimal b2 = BigDecimal.valueOf(v2);
* returnb1.divide
* (b2,DEE_DIV_SCALE,BigDecimal.ROUND_HALF_UP).doubleValue();
* }
*/
int item1 = 1223;//hasCode返回值为:37913
double item2 = 1223;//hasCode返回值为:37913
double item3 = 1223.69;//hasCode返回值为:37913
// BigDecimal b1 = new BigDecimal(item1);
// BigDecimal b1 = new BigDecimal("1233");//hasCode返回值为:38223
// BigDecimal b1 = new BigDecimal(1223);//hasCode返回值为:37913
BigDecimal b3 = new BigDecimal(item2);// hasCode返回值为:37913
// b1.hashCode();//无法直接调用输出结果
// System.out.println("hasCode返回值为:"+b1.hashCode());
// System.out.println("hasCode返回值为:" + b2.hashCode());
System.out.println("hasCode返回值为:" + b3.hashCode());
//System.out.println(BigDecimal.hasCode());//错误:输出的方式
}
}
//加法的操作
System.out.println("BigDecimal -> 0.05+0.01="+(f1.add(f2)));
//减法法的操作
System.out.println("BigDecimal -> 0.05-0.01="+(f1.subtract(f2)));
//乘法的操作
System.out.println("BigDecimal -> 0.05*0.01="+(f1.multiply(f2)));
//除法的操作
System.out.println("BigDecimal -> 0.05/0.01="+(f1.divide(f2)));