发布日期:2018-03-26
怎么把浮点数转化为字符串并去掉不必要的0?+ 查看更多
怎么把浮点数转化为字符串并去掉不必要的0?
+ 查看更多
发布日期:2018-03-23 17:23
分类:JAVA
浏览次数:105
一个64位的双精度浮点数可以表示正负二的53次方的整数,基于此,我准备使用double作为我的唯一数据类型,因为我的最大整数是无符号的32位。现在我要打印这些伪整数(用double表示的整数),但是问题是,现在它们和真正的double类型混合在了一起。我要怎么才能用java打印它。
我之前已经尝试过String.format("%f", value),这种可以实现我的要求,但是尾部有很多不必要的0.
以下是输出的示例:
232.00000000 0.18000000000 1237875192.0 4.5800000000 0.00000000 1.23450000我需要的是:
232 0.18 1237875192 4.58 0 1.2345
我可以写一个函数来去除末尾的0,但是在字符串操作的时候会造成很多不必要的性能损失。有更好的函数来实现这个么?
回答
解决方法是,如果他们是整数的话,就把它当作存储为双精度的整数打印,否则按照必要的最小精度打印。
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以上方法不依赖字符串操作。