表示數值資料時,平衡精度和可讀性可能具有挑戰性,尤其是在處理浮點數時-點數。列印這些數字時會出現問題,這通常會導致尾隨零或不必要的小數位。
問題:
考慮使用 double 類型來表示所有數值,包括整數。然而,將這些偽整數列印為雙精度數會導緻小值尾隨零的問題。
所需輸出:
目標是以乾淨的方式列印雙精確度數格式,抑制整數值的尾隨零,同時保持實際值的精確度
解:
為了有效處理這種情況,可以實現自訂格式化函數,該函數利用double 可以精確表示高達 253。此函數名為fmt(double d),工作原理如下:
if (d == (long) d) { return String.format("%d", (long) d); } else { return String.format("%s", d); }這允許使用%d 格式說明符將偽整數列印為整數,而實際雙精度數使用%s 保留其精確度說明符。
示例輸出:
自定義格式化函數產生以下輸出:232 0.18 1237875192 4.58 0 1.2345
性能優化:
透過避免字串操作,fmt 函數確保高效的效能。相較之下,依賴修整零的解決方案會因字串操作而導致顯著的效能損失。以上是我們如何精確格式化浮點數以消除不必要的零?的詳細內容。更多資訊請關注PHP中文網其他相關文章!