我正在处理一项任务,我遇到了处理下面提到的负面情况
如果Value小于1,那么我想格式化(添加)4个小数点。
例如,如果值为0.4567,那么我需要0.4567
否则,如果该值大于1格式且只有2位数。
例如,如果值为444.9,那么我需要444.90
上面提到的所有内容都运行良好,但是在下面这个条件下发现了
即如果该值小于1并且它以零(0.1000,0.6000)结束,则打印0.2000是没有意义的,所以在这种情况下我希望输出仅为0.20
这是我的程序
package com;
import java.text.DecimalFormat;
public class Test {
public static void main(String args[]) {
try {
String result = "";
Test test = new Test();
double value = 444.9;
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)
return new DecimalFormat("#,###,###,##0.0000").format(d);
return String.valueOf(d);
}
}
答案 0 :(得分:6)
如果你想在第3和第4个小数位忽略0,请使用#
new DecimalFormat("#,###,###,##0.00##").format(d)
答案 1 :(得分:0)
只需创建一个包含四位数的字符串并检查尾随零。如果有两个零或更少,删除它们。否则,保持原样。
result = test.numberFormat(value, 4);
if (result.endsWith("00")) {
result=result.substring(0, result.length()-2);
} else if (result.endsWith("0")) {
result=result.substring(0, result.length()-1);
}
它可能不是最佳的,但它易于阅读和维护。