2015-02-24 136 views
2

将double转换为不带小数位的字符串的最佳方法是什么?将double转换为不带小数位的字符串的最佳方法

什么String.valueOf((int) documentNumber)?

小数点后面的双打总是有0。我不需要舍入或截断

+1

取决于是否要截断或舍入 – Kirby 2015-02-24 22:04:10

+0

我的双数在小数点后总是有0。我不需要轮回或截断 – 2015-02-25 12:48:09

+0

嗯,它是一个或另一个。听起来像截断,然后。投到int最简单 – Kirby 2015-02-25 16:46:54

回答

1

如果你确信双确实是一个整数,用这一个:

NumberFormat nf = DecimalFormat.getInstance(); 
nf.setMaximumFractionDigits(0); 
String str = nf.format(documentNumber); 

作为奖励,这样你保持你的语言环境配置为千个分隔符。

编辑
我添加此以前删除的选择,因为它似乎是对OP有用:

Double.valueOf(documentNumber).intValue(); 
+0

在我看来,它将给出与铸造到int相同的结果。我很高兴你看到它,它为你工作。我重新添加删除的答案,因为它似乎很有用。 – 2015-02-25 13:37:22

1

您可以将双转换为字符串以最低限度的必要精度:

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" 
2

你可以试试这个:

String numWihoutDecimal = String.valueOf(documentNumber).split("\\.")[0]; 
+0

这不是一个好的做法,但感谢您的回答 – 2015-02-25 13:33:25

0

我不确定这是否是最好的方法,但我确定它是最短的方式:

((int)documentNumber) + "" 
+0

这不是一个好的做法,但感谢您的回答 – 2015-02-25 16:53:51

+0

请解释为什么这不是好的做法。 – 2015-02-25 20:20:57

+0

首先,我们将double转换为整数,并且通过将空字符串添加到字符串来转换整数。 3个简单的操作。也许一个坏处是,我们创建了一个超额的对象(空字符串),但是java编译器正在优化这样的构造。甚至像JVM这样的对象就像空字符串一样在JVM开始时被兑现。在我看来,这是最佳实践:JVM的简单,易读和易于优化。证明我是错的。 – 2015-02-25 20:31:18

0

鉴于新编辑的问题,指出了双打其实都是整数,我会说你的建议回答String.valueOf((int) documentNumber)是伟大的。

相关问题