如何在沒有不必要的小數0的情況下很好地格式化浮點數為字符串?64位雙倍可以表示整數+/-2。53一點兒沒錯考慮到這個事實,我選擇對所有類型使用雙類型作為單一類型,因為我的最大整數是無符號32位。但是現在我必須打印這些偽整數,但問題是它們也和實際的雙數混合在一起。那么,如何在Java中很好地打印這些雙打呢?我試過了String.format("%f", value),這是接近的,除了我得到很多尾隨零的小值。的示例輸出%f232.00000000
0.18000000000
1237875192.0
4.5800000000
0.00000000
1.23450000我想要的是:232
0.18
1237875192
4.58
0
1.2345當然,我可以編寫一個函數來修剪那些零,但這是由于字符串操作而導致的大量性能損失。我能用另一個格式代碼做得更好嗎?編輯湯姆E.和杰里米S.的答案是不可接受的,因為他們都武斷地把數字圈到小數點2位回答前請先理解問題。編輯2請注意String.format(format, args...)是區域依賴性(見下文答復)。
3 回答

12345678_0001
TA貢獻1802條經驗 獲得超5個贊
如果這樣做的目的是打印存儲為雙倍的整數,就像它們是整數一樣,然后以最小的必要精度打印雙數:
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
并且不依賴于字符串操作。
添加回答
舉報
0/150
提交
取消