如果我有一个双重存储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”。不关心任何其他号码
答案 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