簡體   English   中英

%g如何舍入浮點數?

[英]How %g rounds up floating point numbers?

雖然我在printf()使用%g作為格式說明符,但有時它會在小數點后向上舍入到2個位置,有時會達到3個位置,有時會達到4個位置......它是如何做到的?

實際上我們應該使用%g而不是%f%e作為浮點數?

%g在使用%e%f之間自動“翻轉”,具體取決於值,試圖以與手持式計算器相同的方式顯示盡可能多的信息。 此外,不包括%g尾隨零和小數點。

%g格式說明符像%f那樣進行舍入,但如果%f將導致4.234000 ,則%g將省略尾隨零並打印4.234

當輸出格式中最有意義的是,某些數字打印為12345.6 ,應使用%g ,而略大的數字將打印為1.235e04

對於%f轉換,“precision”是小數點后的位數 ,而對於%g它是有效位數。
兩種情況下的默認精度均為6。

來自printf手冊

“double參數以f或e格式轉換(或G轉換為F或E)。精度指定有效位數。如果精度丟失,則給出6位數;如果精度為零,則對其進行處理如果樣式e在轉換時的指數小於-4或大於或等於精度時使用。尾隨零從結果的小數部分中刪除;小數點僅在后面跟隨時出現至少一位數。“

我不是指“RTFM”,但你可能會在控制精度和長度的手冊章節中找到你想要的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM