我当前的输出是
总分是:0.0
总分是:2.4
总分是:2.0
所需的输出是
总分是:0
总分是:2.4
总分是:2
我的服务器包含:
这些数字是双精度的,但是当我在Android上进行打印时:
System.out.println(mPojo.totalPoints)
输出为:
I / System.out:0.0
I / System.out:0.0
I / System.out:7.5
我的问题是,有没有一种方法可以避免显示0.0和10.0,而仅在7.5的情况下显示小数?我的意思是在Android上显示为0.0,而我只想看到0。
只有包含小数的显示它们。
答案 0 :(得分:3)
您可以使用DecimalFormat:
Double value = 5.500;
DecimalFormat format = new DecimalFormat("0.#");
System.out.println(format.format(value)); // prints 5.5
Double value = 5.000;
DecimalFormat format = new DecimalFormat("0.#");
System.out.println(format.format(value)); // prints 5
答案 1 :(得分:2)
我实际上更喜欢在当前输出中看到它,因为所有数字的格式都一致。话虽如此,如果您确实想在某些情况下去除小数,我们可以尝试这样做:
double input = 10.0d;
String field = String.valueOf(input);
field = field.replaceAll("\\.0+$", "");
System.out.println(field); // should print just 10
此方法将double
转换为String
,然后用正则表达式替换\.0+$
,以删除所有全零的小数部分。
答案 2 :(得分:1)
另一种没有格式化程序的有趣方法:
double d = 5.0;
long l = (long) d;
if (d - l == 0) {
System.out.println(l);
} else {
System.out.println(d);
}