如何很好地将浮点数转换为String,而不需要十进制0?

问题:

一个64位双精度可以精确地表示整数+/- 2 53
鉴于这一事实,我选择将双重类型用作所有类型的单一类型,因为我的最大整数是无符号的32位。
但现在我必须打印这些伪整数,但问题是它们也混合在实际的双打中。
那么如何在Java中很好地打印这些双打?
我尝试了String.format("%f", value),这是接近的,除了我为小值获得了很多尾随零。
以下是%f的输出示例

232.00000000
0.18000000000
1237875192.0
4.5800000000
0.00000000
1.23450000

我想要的是:

232
0.18
1237875192
4.58
0
1.2345

当然我可以编写一个函数来修剪这些零,但是由于String操作,这是很多的性能损失。我可以用另一种格式代码做得更好吗?
 编辑
Tom E.和Jeremy S.的答案是不可接受的,因为他们任意轮番到2位小数。请在回答之前了解问题。
 编辑2
请注意,String.format(format, args...)(见下面的答案)。

回答:

如果这个想法是打印存储为双精度的整数,就像它们是整数一样,否则以最小必要精度打印双精度:

public static String fmt(double d)
{
    if(d == (long) d)
        return String.format("%d",(long)d);
    else
        return String.format("%s",d);
}

生产:

232
0.18
1237875192
4.58
0
1.2345

而且不依赖于字符串操作。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How to nicely format floating numbers to String without unnecessary decimal 0?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 32 = 41