不多说,直接上测试代码:
public class DemoBigDicimal {
@Test
public void test(){
DecimalFormat df = new DecimalFormat("#,##0.00");
DecimalFormat df2 = new DecimalFormat("#.00");//这种如果是0.xx的话,显示还是有问题.前面的0会消失
DecimalFormat df3 = new DecimalFormat("0.00");//
float a = 20000000f;
float b = 12f;
System.out.println(df.format(a/b));//1,666,666.62
System.out.println(df2.format(a/b));//1666666.62
System.out.println(a/b);//1666666.6
double c = 1.0;
double d = 3.0;
System.out.println(df.format(c/d));//0.33
System.out.println(df2.format(c/d));//.33
System.out.println(df3.format(c/d));//0.33
System.out.println(c/d);//0.3333333333333333
System.out.println((float)1/3 + (float)2/3);//1.0
System.out.println("----------------------------------------------------------------------");
System.out.println(1.79 + 0.12);//1.9100000000000001
System.out.println(add(1.79,0.12));//1.91
System.out.println(2.01 - 0.12);//1.8899999999999997
System.out.println(sub(2.01,0.12));//1.89
System.out.println(1.01 * 1.3);//1.3130000000000002
System.out.println(mul(1.01,1.3));//1.313
System.out.println(0.69 / 10);//0.06899999999999999
System.out.println(div(0.69,10));//0.069
}
public static double add(double num,double num2){
BigDecimal n = new BigDecimal(Double.toString(num));
BigDecimal n2 = new BigDecimal(Double.toString(num2));
return n.add(n2).doubleValue();
}
public static double sub(double num,double num2){
BigDecimal n = new BigDecimal(Double.toString(num));
BigDecimal n2 = new BigDecimal(Double.toString(num2));
return n.subtract(n2).doubleValue();
}
public static double mul(double num,double num2){
BigDecimal n = new BigDecimal(Double.toString(num));
BigDecimal n2 = new BigDecimal(Double.toString(num2));
return n.multiply(n2).doubleValue();
}
public static double div(double num,double num2){
BigDecimal n = new BigDecimal(Double.toString(num));
BigDecimal n2 = new BigDecimal(Double.toString(num2));
return n.divide(n2).doubleValue();
}
}