首頁 >Java >java教程 >如何在 Java 中以精確的格式列印雙精度數,消除不必要的尾隨零?

如何在 Java 中以精確的格式列印雙精度數,消除不必要的尾隨零?

Barbara Streisand
Barbara Streisand原創
2024-12-31 13:41:11618瀏覽

How Can I Print Doubles in Java with Precise Formatting, Eliminating Unnecessary Trailing Zeros?

在 Java 中精確列印浮點數

鑑於 64 位元雙精確度數能夠精確表示一定範圍內的整數,在列印混合整數和雙值。雖然 String.format("%f") 提供了緊密格式,但它為小值添加了不必要的尾隨零。

尋求解決方案:

目標是列印整數值儲存為不含小數零的雙精度數,同時保持實際雙精度數的高精度。例如,考慮這些輸入:

  • 232.00000000
  • 0.18000000000
  • 1237875192 .0
  • 4.5800000000
  • 0.00000000
  • 1.23450000

預期的輸出將為:

  • 232
  • 0.18
  • 1237875192
  • 4.58
  • 0
  • 1.2345

高效率格式:

高效率格式:
public static String fmt(double d) {
    if (d == (long) d)
        return String.format("%d", (long) d);
    else
        return String.format("%s", d);
}

為了最佳化整數值,我們可以利用數值可以精確表示為64 位元雙精度數。以下Java 程式碼片段無需借助效能密集字串操作即可實現此目的:

  • 說明:
用於可以準確表示的整數值作為雙精度數,程式碼將它們轉換為長整數並使用%d 對其進行格式化。這消除了不必要的尾隨零。

對於非整數值,程式碼使用 %s 以最小精度保留原始雙精度值。

結果:
232
0.18
1237875192
4.58
0
1.2345
應用於範例輸入時,輸出與所需的格式相符:

以上是如何在 Java 中以精確的格式列印雙精度數,消除不必要的尾隨零?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn