我有一个基本类型的浮点数,现在需要转换为基本类型的双精度浮点数。简单地将浮点数强制转换为双精度浮点数会产生奇怪的额外精度。例如:
float temp = 14009.35F;
System.out.println(Float.toString(temp)); // Prints 14009.35
System.out.println(Double.toString((double)temp)); // Prints 14009.349609375
如果不使用强制类型转换,而是将浮点数输出为字符串,然后将其解析为双精度浮点数,就可以得到想要的结果:
System.out.println(Double.toString(Double.parseDouble(Float.toString(temp))));
// Prints 14009.35
有没有比先转成字符串再转回来更好的方法?