将double转换为不带小数位的字符串的最佳方法是什么?将double转换为不带小数位的字符串的最佳方法
什么String.valueOf((int) documentNumber)?
小数点后面的双打总是有0。我不需要舍入或截断
将double转换为不带小数位的字符串的最佳方法是什么?将double转换为不带小数位的字符串的最佳方法
什么String.valueOf((int) documentNumber)?
小数点后面的双打总是有0。我不需要舍入或截断
如果你确信双确实是一个整数,用这一个:
NumberFormat nf = DecimalFormat.getInstance();
nf.setMaximumFractionDigits(0);
String str = nf.format(documentNumber);
作为奖励,这样你保持你的语言环境配置为千个分隔符。
编辑
我添加此以前删除的选择,因为它似乎是对OP有用:
Double.valueOf(documentNumber).intValue();
在我看来,它将给出与铸造到int相同的结果。我很高兴你看到它,它为你工作。我重新添加删除的答案,因为它似乎很有用。 – 2015-02-25 13:37:22
您可以将双转换为字符串以最低限度的必要精度:
public static String ceonvert(double d)
{
if(d == (long) d)
return String.format("%d",(long)d);
else
return String.format("%s",d);
}
或者这样:
> new DecimalFormat("#.##").format(2.199); //"2.2"
你可以试试这个:
String numWihoutDecimal = String.valueOf(documentNumber).split("\\.")[0];
这不是一个好的做法,但感谢您的回答 – 2015-02-25 13:33:25
我不确定这是否是最好的方法,但我确定它是最短的方式:
((int)documentNumber) + ""
这不是一个好的做法,但感谢您的回答 – 2015-02-25 16:53:51
请解释为什么这不是好的做法。 – 2015-02-25 20:20:57
首先,我们将double转换为整数,并且通过将空字符串添加到字符串来转换整数。 3个简单的操作。也许一个坏处是,我们创建了一个超额的对象(空字符串),但是java编译器正在优化这样的构造。甚至像JVM这样的对象就像空字符串一样在JVM开始时被兑现。在我看来,这是最佳实践:JVM的简单,易读和易于优化。证明我是错的。 – 2015-02-25 20:31:18
鉴于新编辑的问题,指出了双打其实都是整数,我会说你的建议回答String.valueOf((int) documentNumber)
是伟大的。
取决于是否要截断或舍入 – Kirby 2015-02-24 22:04:10
我的双数在小数点后总是有0。我不需要轮回或截断 – 2015-02-25 12:48:09
嗯,它是一个或另一个。听起来像截断,然后。投到int最简单 – Kirby 2015-02-25 16:46:54