BigDecimal
· 阅读需 3 分钟
一、概述
对于计算小数,可避免丢失精度,计算金额常用此类
二、构造函数
只建议使用字符串构造
float类型的1.0无法精确表示1.0,而string可以:
BigDecimal bigDecimal = new BigDecimal("1.0");
三、常用方法详解
常用计算
BigDecimal one = new BigDecimal("4.0");
BigDecimal two = new BigDecimal("4.2");
BigDecimal three = new BigDecimal("4.5");
BigDecimal four = new BigDecimal("4.24");
BigDecimal five = new BigDecimal("2");
BigDecimal six = new BigDecimal("3");
//计算:(返回新的BigDecimal对象)
// 加
System.out.print("4.0 + 4.24 = ");
System.out.println(one.add(four));
// 减
System.out.print("4.0 - 4.24 = ");
System.out.println(one.subtract(four));
System.out.print("4.0 - 2 = ");
System.out.println(one.subtract(five));
// 乘
System.out.print("4.2 * 2 = ");
System.out.println(two.multiply(five));
// 除
System.out.print("4.2 / 2 = ");
System.out.println(two.divide(five));
System.out.print("[保留5位小数(四舍五入模式)] 4.24 / 3 = ");
System.out.println(four.divide(six, 5, BigDecimal.ROUND_HALF_UP));
// 四舍五入(保留1位小数)
System.out.println(four.setScale(1, BigDecimal.ROUND_HALF_UP));
// 比较大小
System.out.println(four.compareTo(three));
四、格式化输出
一般不怎么用得到,需要的话再检索
NumberFormat currency = NumberFormat.getCurrencyInstance(); //建立货币格式化引用
NumberFormat percent = NumberFormat.getPercentInstance(); //建立百分比格式化引用
percent.setMaximumFractionDigits(3); //百分比小数点最多3位
// 定义三个BigDecimal的值:
BigDecimal loanAmount = new BigDecimal("15000.48"); //贷款金额
BigDecimal interestRate = new BigDecimal("0.008"); //利率
BigDecimal interest = loanAmount.multiply(interestRate); //相乘
//贷款金额: ¥15,000.49
System.out.println("贷款金额:\t" + currency.format(loanAmount));
//利率: 0.8%
System.out.println("利率:\t" + percent.format(interestRate));
//利息: ¥120.00
System.out.println("利息:\t" + currency.format(interest));
五、Q&A
Q:toplainstring
和tostring
的区别
A:toPlainString()
方法在处理大数和小数时都能保持十进制形式,而toString()
方法在数值过大或过小时会转为科学计数法表示。无论如何都建议使用toPlainString()