BigDecimal的精度问题以及BigDecimal的加减乘除运算
1.先说BigDecimal 的加减乘除运算
1).加法
(示例)
//定义 bigdecimal 类型数 numOne 其值大小为10
BigDecimal numOne = new BigDecimal("10");
//定义 bigdecimal 类型数 numTwo 其值大小为20
BigDecimal numTwo = new BigDecimal("20");
//此处为加法计算
BigDecimal sum = numOne.add(numTwo);
//将结果转为double类型
double sumDoubleValue = sum.doubleValue();
//将结果转为int类型 除此之外 还有long类型 float类型 ...
long sumIntvalue = sum.longValue();
System.out.println(sumDoubleValue);
System.out.println(sumIntvalue);
2)减法
//定义 bigdecimal 类型数 numSubtractOne 其值大小为10
BigDecimal numSubtractOne = new BigDecimal("10");
//定义 bigdecimal 类型数 numSubtractTwo 其值大小为20
BigDecimal numSubtractTwo = new BigDecimal("20");
//减法计算
BigDecimal subtractValue = numSubtractOne.subtract(numSubtractTwo);
//控制输出 double 类型的结果
System.out.println(subtractValue.doubleValue());
3)乘法
//定义 bigdecimal 类型数 numMultityOne 其值大小为10
BigDecimal numMultiplyOne = new BigDecimal("10");
//定义 bigdecimal 类型数 numMultityTwo 其值大小为20
BigDecimal numMultiplyTwo = new BigDecimal("20");
//乘法结果
BigDecimal multiplyValue = numMultiplyOne.multiply(numMultiplyTwo);
//控制台输出结果
System.out.println(multiplyValue.doubleValue());
4)除法
//定义 bigdecimal 类型数 numDivideOne 其值大小为10
BigDecimal numDivideOne = new BigDecimal("10");
//定义 bigdecimal 类型数 numDivideTwo 其值大小为20
BigDecimal numDivideTwo = new BigDecimal("20");
//除法结果
BigDecimal divide = numDivideOne.divide(numDivideTwo);
//控制台输出结果
System.out.println(divide.doubleValue());
2.BigDecimal的精度问题
对于BigDecimal 的精度保留需要用到DecimalFormat模板 先看示例:
(示例)
//小数点后保留两位,整数位没有数据保留0
DecimalFormat tamplet = new DecimalFormat("0.00");
//想要处理小数点的数据
double numDoubleValue = 5.511651616;
//小数点后保留两位后的数据
String value = tamplet.format(numDoubleValue);
//此处将string类型转换为你想要的类型 比如 double
Double aDoubleValue = Convert.toDouble(value);
//输出打印
System.out.println(aDoubleValue);
对于模板除了"0.00"之外还有很多
例如:"#.00" ,“00.00”,“0.000”…
“#.00”:
表示小数后保留两位,个位如果没有值就忽略.举个例子当你对 0.233 使用这个模板时,那么输出的结果就是".23" 个位的0不见了,那是因为 # 的缘故.如果个位的数值没有时会被忽略掉.
但"0.00"
这个模板就是个位的数值没有时补0.使用这个模板对0.233进行小数处理时,那么输出的结果就是"0.23",可见0的作用是放在某一个数位上,当这个数位没有数值时会补0
假如 我们用"00.000"这个模板对 1.22 这个数进行处理.那么输出的结果就是 “01.220”
以上可以总结出
0是用于补 0 操作.当模板小数后有几个0 那么就相当于保留几位数字.
#可理解为占位 当有数值时就显示,没有数值时就忽略.但只能放小数的末尾或者整数的最高位