整型数据赋值给浮点型数据,取出这个浮点型数据, 默认是实数小数的
//double 和 float 数据类型都是浮点型,
// 在从内存中取出来后, 即便之前的赋值是个 整型的数据类型, 把浮点型取出来后都会变成实数的小数, 比如赋值为0, 取出来后就是0.0了
float var_f = 0;
double var_d = 0;
System.out.println(var_f);// 0.0
System.out.println(var_d);// 0.0
String str = String.valueOf(var_d);
System.out.println(str);// 0.0
String strInt = String.valueOf(0);
System.out.println(strInt);// 0
单纯的Double.toString和Float.toString, 只要小数位在一定范围内, 是不会出现精度损失的, 但是一旦涉及到浮点型运算, 就会有精度损失的问题了, 原因是 在浮点运算前, 是根据 经过 IEEE 754-2008 standard处理后的浮点表示的值拿到的值, 此时已经是非精确的了
你认为你看错了,但结果却是是这样的。问题在哪里呢?原因在于我们的计算机是二进制的。浮点数没有办法是用二进制进行精确表示。我们的CPU表示浮点数由两个部分组成:指数和尾数,这样的表示方法一般都会失去一定的精确度,有些浮点数运算也会产生一定的误差。如:2.4的二进制表示并非就是精确的2.4。反而最为接近的二进制表示是 2.3999999999999999。浮点数的值实际上是由一个特定的数学公式计算得到的。