如下:
@Test
public void test01(){
double num1 = 0.1;
double num2 = 0.2;
double num3 = num1 + num2;
System.out.println(num3);//0.30000000000000004
}
使用bigdecimal处理double问题
/*
BigDecimal BigDecimal(double d); //不允许使用
BigDecimal BigDecimal(String s); //常用,推荐使用
static BigDecimal valueOf(double d); //常用,推荐使用
*/
@Test
public void test02(){
double num1 = 0.1;
double num2 = 0.2;
// BigDecimal decimal1 = new BigDecimal("0.1");
// BigDecimal decimal2 = new BigDecimal("0.2");
// BigDecimal decimal1 = new BigDecimal(Double.toString(num1));
// BigDecimal decimal2 = new BigDecimal(Double.toString(num2));
// BigDecimal decimal1 = new BigDecimal(String.valueOf(num1));
// BigDecimal decimal2 = new BigDecimal(String.valueOf(num2));
BigDecimal decimal1 = BigDecimal.valueOf(num1);
BigDecimal decimal2 = BigDecimal.valueOf(num2);
BigDecimal decimal3 = decimal1.add(decimal2);
System.out.println("decimal3==>" + decimal3);//0.3
}
格式化操作
@Test
public void test03(){
BigDecimal loanMount = new BigDecimal("12.346");
BigDecimal interestRate = BigDecimal.valueOf(0.008);
//建立货币格式引用
NumberFormat currency = NumberFormat.getCurrencyInstance();
System.out.println("人民币字符:" + currency.format(loanMount) );//人民币字符:¥12.35
//建立利率格式引用
NumberFormat percent = NumberFormat.getPercentInstance();
percent.setMaximumFractionDigits(3);
System.out.println("利率:" + percent.format(interestRate));
System.out.println("利息:" + loanMount.multiply(interestRate));
}