如何将浮点值舍入为double值?

Hor*_*ux7 0 java floating-point double rounding-error rounding

以下代码错误地针对人类:

double d = 0.7F;
System.out.println( d );
Run Code Online (Sandbox Code Playgroud)

打印价值:0.699999988079071

以下代码更好用:

double d = Double.valueOf( Float.toString( 0.7F ));
System.out.println( d );
Run Code Online (Sandbox Code Playgroud)

但是创建一个额外的String.没有额外的字符串,是否有更多的性能转换为float?

代码行很简单,只展示了问题.该计划更复杂.浮点值位于复杂模型的一部分中.格式化图层仅使用double.此外,DecimalFormat只接受double而不是float.

Rea*_*tic 5

是的,使用

double d = 0.7D;
Run Code Online (Sandbox Code Playgroud)

使用F它意味着它是一个float常量,然后它被提升为double并且可能不是最接近0.7的数字,可以用双精度浮点表示,因为尾数不以任何方式扩展.

0.7D是一个double不变的开始.