[英]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.