在java中float a =1;是没有问题的,但是如果定义float a = 1.1;变成小数这种是编译不通过的,因为1.1默认是Double类型,所有这里必须在1.1后面添加f或者F;
float a1 = 1.1F;
float a2 = 1.2f;
System.out.println(a2-a1);//
double b1 = 1.1;
double b2 = 1.2;
System.out.println(b2-b1);//
BigDecimal c1 = new BigDecimal(1.1);
BigDecimal c2 = new BigDecimal(1.2);
System.out.println(c2.subtract(c1).setScale(1,RoundingMode.HALF_UP));
输出的结果是:
0.100000024
0.09999999999999987
0.1
如果float和double都定义的是整数,计算的结果是保留一位小数的。
float a1 = 1;
float a2 = 2f;
System.out.println(a2-a1);//1.0
double b1 = 1;
double b2 = 2;
System.out.println(b2-b1);//1.0