【发布时间】:2013-12-18 13:28:48
【问题描述】:
如何使浮点值仅显示点和小数(如果存在)。例如显示 17 而不是 17.0 但如果我有 17.2 则显示点和小数。
谢谢!
【问题讨论】:
标签: java android xml floating-point decimal
如何使浮点值仅显示点和小数(如果存在)。例如显示 17 而不是 17.0 但如果我有 17.2 则显示点和小数。
谢谢!
【问题讨论】:
标签: java android xml floating-point decimal
您可能还需要限制小数部分的长度,因为在一系列浮点运算之后可能会出现类似 12.00001 的结果。我用来很好地将双精度格式化为字符串的代码 sn-p:
private static final DecimalFormat[] formats= new DecimalFormat[]{
null,
new DecimalFormat("#.#"),
new DecimalFormat("#.##"),
new DecimalFormat("#.###"),
new DecimalFormat("#.####")
};
public static String toConciseString(double d, int fractionLength){
long asLong = (long) d;
if(Math.abs(d - asLong) < 0.00001d){
return Long.toString(asLong);
}
return formats[fractionLength].format(d);
}
显示输出示例的测试用例:
assertThat(toConciseString(23.323, 2)).isEqualTo("23.32");
assertThat(toConciseString(23.329, 2)).isEqualTo("23.33");
assertThat(toConciseString(23.329, 3)).isEqualTo("23.329");
assertThat(toConciseString(23.3, 2)).isEqualTo("23.3");
assertThat(toConciseString(23.30001, 2)).isEqualTo("23.3");
assertThat(toConciseString(23.00001, 2)).isEqualTo("23");
【讨论】:
试试这个:
DecimalFormat decimalFormat = new DecimalFormat("#0.##");
float float1 = 1.00f;
float float2 = 1.02f;
System.out.println(decimalFormat.format(float1));
System.out.println(decimalFormat.format(float2));
它会打印出来:
1
1.02
【讨论】: