Java 无法将双精度值转换为小数点后2位
我尝试使用以下两种方法将Java 无法将双精度值转换为小数点后2位,java,Java,我尝试使用以下两种方法将double值转换为小数点后2位 十进制格式 double value = 2.384185791015625E-4; DecimalFormat df = new DecimalFormat("###.##"); System.out.println(df.format(value)); 数学圆 double value = 2.384185791015625E-4; double newValue = Math.round(value*100.0)/100.0; S
double
值转换为小数点后2位
十进制格式
double value = 2.384185791015625E-4;
DecimalFormat df = new DecimalFormat("###.##");
System.out.println(df.format(value));
数学圆
double value = 2.384185791015625E-4;
double newValue = Math.round(value*100.0)/100.0;
System.out.println(newValue);
在这两种情况下,我都得到0
输出。我希望输出为2.38
。
任何人都可以建议如何解决此问题。您不会得到2.38,因为双精度的值是
0.0002384185791015625
由于您将四舍五入到小数点后两位,您将得到
0.00
我原以为输出为2.38
您的数字是0.0002384185791015625
,所以四舍五入到小数点后两位就剩下0.00
。您认为E-4
后缀是什么意思?看看@tkausl你能告诉我,你是如何将2.384185791015625625E-4转换成0.0002384185791015625.这可以解决我的问题。它已经有了那个值,没有必要转换它Xe-4
是一种表达它的x*10^(-4)
。这意味着它是x
,但向右移动了4次。因此,如果我们有2.5E-4
,则值为0.00025
。特别是当具有较小的值时,如0.00000000 25
,如果您改为编写2.5E-9
,则该值更易于阅读和理解。当您进行否决表决时,添加注释将清楚说明为什么进行否决表决