如何在没有.0的情况下打印双精度值

时间:2019-05-05 15:10:51

标签: java android

TL; DR

我当前的输出是

  

总分是:0.0

     

总分是:2.4

     

总分是:2.0

所需的输出是

  

总分是:0

     

总分是:2.4

     

总分是:2

我的服务器包含:

enter image description here

这些数字是双精度的,但是当我在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。

只有包含小数的显示它们。

3 个答案:

答案 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);
}