将特定的double转换为string

时间:2015-05-20 13:18:13

标签: java string format double

如果我有一个双重存储10.0,将它转换为字符串10的最佳方法是什么? 目前我这样做:

if (object.getValue() > 9.999) {
  someObject.setText(String.format("%d", new Double(object.getValue()).intValue()));
}
else {
    //use amount as is
}

更新
 这些是班级成绩。我关心一个好的编码风格,检查double是否为10.0,然后才将其转换为字符串“10”。不关心任何其他号码

6 个答案:

答案 0 :(得分:0)

如果你知道这个字符串,你可以简单地将其子串直到点:

String s = "10.0";
System.out.println(s.substring(0, s.indexOf('.')));

如果你想把它作为一个双重操作(虽然我不知道为什么),你可以尝试类似的东西:

System.out.println(String.format("%d", (int)Math.floor(new Double("10.0"))));

当然,有很多方法。我认为你最好的选择是使用子串,但我不确定你的需求是什么。

希望这会有所帮助:)

问题澄清后更新:

如果您感兴趣的是检查双精度值(当然假设object.getValue()是双精度数),请检查:

if (object.getValue() >= 10)

它将覆盖您需要的任何内容,然后您可以根据需要打印一个简单的“10”字符串。

答案 1 :(得分:0)

如果你想做的就是这样:

double number = 10.0;
String output = ("" + (int)number);
System.out.println(output);

答案 2 :(得分:0)

最简单的方法就是这样做。

double d = 10.0
String str = String.valueOf(d);
System.out.println(str.substring(0,str.indexOf(".")));

由于我们处理的是双倍,因此可以完成四舍五入。请参阅此SO

答案 3 :(得分:0)

试试这个:

    double  d = 10; 

    System.out.println(new BigDecimal(d).setScale(0, RoundingMode.HALF_UP).toPlainString());

只会打印10而不会尾随零,或者您可以根据需要更改比例。

转换为int的优点是,有舍入,9.9将舍入为10,而转换为int将给出9。

答案 4 :(得分:0)

试试这个。我认为它应该有用。

String s=String.valueOf(10.0);
s=s.replace(".0","");
System.out.println(s);

答案 5 :(得分:0)

您可以与双倍10.00进行比较,如下所示:

    final double TEN_DOUBLE = 10.00;
    double ten = 10.00;
    double nineAndSomething = 9.10;

    System.out.println("Formatted:" + ((ten == TEN_DOUBLE) ? "10" : ten));
    System.out.println("Formatted:" + ((nineAndSomething == TEN_DOUBLE) ? "10" : nineAndSomething));

这为您提供以下输出:

格式化:10
格式化:9.1