如果值是这样的(0.0007)以十进制后的3个零结束,我得到的结果为4.0E-4
请告诉我如何解决这个问题
这是我的计划。
package com;
import java.text.DecimalFormat;
public class Test {
public static void main(String args[]) {
try {
String result = "";
Test test = new Test();
double value = 0.0004;
if (value < 1) {
result = test.numberFormat(value, 4);
} else {
result = test.numberFormat(value, 2);
}
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
public String numberFormat(double d, int decimals) {
if (2 == decimals)
return new DecimalFormat("#,###,###,##0.00").format(d);
else if (0 == decimals)
return new DecimalFormat("#,###,###,##0").format(d);
else if (3 == decimals)
return new DecimalFormat("#,###,###,##0.000").format(d);
else if (4 == decimals)
new DecimalFormat("#,###,###,##0.00##").format(d);
return String.valueOf(d);
}
}
答案 0 :(得分:6)
你刚忘了回复陈述。
else if (4 == decimals)
return new DecimalFormat("#,###,###,##0.00##").format(d);
所以在4
的情况下,你使用DecimalFormat
格式化你的数字,但是在最后的其他地方之后只返回double的正常字符串表示。
答案 1 :(得分:2)
相反如何:
public static String numberFormat(double d, int decimals) {
return String.format("%." + decimals + "f", d);
}
似乎比你现在所做的更干净。
答案 2 :(得分:0)
例如:
Double a = 2.85d / 10000;
DecimalFormat formatter = new DecimalFormat("0.0000");
System.out.println(formatter .format(a));
输出:
0.0003
您也可以使用toPlainString()
,然后将其转换为数字:
Double a = 2.85d / 10000;
System.out.println(BigDecimal.valueOf(a).toPlainString());
输出:
0.000285