2014-03-13 23 views
-2

的雙號什麼是在C語言打印雙(printf的),使得簡單的解決方案:漂亮打印在一個固定數目的字符

  1. 恰好被用於N個字符(將圍繞6),用於所有的雙數(nan和infinities分開處理),正面和負面都一樣(+或 - 總是作爲第一個字符);

  2. 只要數字字符不全爲0(即數字太小)或小數點是N個字符的最後一個(即太大的數字),就使用十進制表示('。'總是存在)。否則切換到科學表示,始終佔用N個字符。

我能想到的似乎相當複雜的所有解決方案,任何想法容易獲得這樣的結果(效率是不是一個問題在這裏)?

謝謝!

+0

爲什麼投降? – stepelu

+1

我們不在這裏爲你開發算法。你所提供的基本上是一項家庭作業的任務,帶着「爲我做這件事」從你身上隱藏。 –

+1

顯示您嘗試過的內容,爲什麼它不正確,以及您需要更多信息。 http://www.cplusplus.com/reference/cstdio/printf/將是一個開始。 – clcto

回答

0

我找不到通過單個printf調用來完成此操作的方法,這裏是我的解決方案。

至少9個字符必須用作(前面加+),即科學記數法的最小字符數(例如:+ 1.0E-002)。在下面我考慮9個字符的情況。以下兩個格式用於基於所報告的下面的條件:

科學格式「%+ 1E」:

  • 字符4至9按照十進制格式是0和數量是不相同0(即小數點過小)

  • '。'炭是不是char 3和炭8按十進制格式之間存在(即,對於小數太大)

十進制格式 '%+ 6F':

  • 無限或NaN

  • 所有其他情況下

這很容易通過改變一個const,以適應比表示9個字符長上面的螞蟻。