[C#] 格式化數值

  • 20819
  • 0

摘要:[C#] 格式化數值

有時候會忘記,格式輸出怎麼寫。

找了一些連結參考,下次這樣忘了,就可以來這邊查。

msdn.microsoft.com/zh-tw/library/s8s7t687.aspx

msdn.microsoft.com/zh-tw/library/0c899ak8%28VS.80%29.aspx

www.cnblogs.com/tuyile006/archive/2006/07/13/449884.aspx

 

格式化數值結果表 (C# 參考)

字元 說明 範例 輸出

C 或 c

貨幣

Console.Write("{0:C}", 2.5);

Console.Write("{0:C}", -2.5);

$2.50

($2.50)

D 或 d

十進位

Console.Write("{0:D5}", 25);

00025

E 或 e

科學記號

Console.Write("{0:E}", 250000);

2.500000E+005

F 或 f

固定點

Console.Write("{0:F2}", 25);

Console.Write("{0:F0}", 25);

25.00

25

G 或 g

一般

Console.Write("{0:G}", 2.5);

2.5

N 或 n

數值

Console.Write("{0:N}", 2500000);

2,500,000.00

X 或 x

十六進位

Console.Write("{0:X}", 250);

Console.Write("{0:X}", 0xffff);

FA

FFFF

 

自訂數值格式字串

格式規範 名稱 描述

0

零值預留位置

如果正在格式化的值有數字位於格式字串中出現 '0' 的位置上,那麼那個數字會複製到輸出字串。小數點前最左邊 '0' 和小數點後最右邊 '0' 的位置決定要一直在輸出字串中出現的位數範圍。

"00" 規範會造成數值捨入至最接近的小數點前面數值,而其中永遠使用遠離零的捨入方式。例如,使用 "00" 格式化 34.5 將會得到值 35。

#

數字預留位置

如果正在格式化的值有數字位於格式字串中出現 '#' 的位置上,那麼那個數字會複製到輸出字串。否則,沒有東西會存放在結果字串中的那個位置。

注意,如果它不是有效位數的話,這個規範不會顯示 '0' 字元,即使 '0' 是字串中的唯一數字也一樣。如果是正在顯示的數值的有效位數,會顯示 '0' 字元。

"##" 格式字串會造成數值捨入至最接近的小數點前面數值,而其中永遠使用遠離零的捨入方式。例如,使用 "##" 格式化 34.5 將會得到值 35。

.

小數點

格式字串中第一個 '.' 字元決定格式化的值中小數分隔符號的位置;任何額外 '.' 字元將被忽略。

當做小數分隔符號的實際字元由控制格式的 NumberFormatInfoNumberDecimalSeparator 屬性來決定。

,

千位分隔符號和數值縮放

',' 字元可當做千位分隔符號規範和數值縮放規範使用。

千位分隔符號規範:如果在兩個採用數字之整數格式的數字替代符號 (Placeholder) (0 或 #) 之間指定一或多個 ',' 字元,則會在每個數字群組輸出的整數部分之間插入群組分隔符號字元。

目前 NumberFormatInfo 物件的 NumberGroupSeparatorNumberGroupSizes 屬性會判斷當做數字群組分隔符號使用的字元,以及每個數字群組的大小。例如,如果使用字串 "#,#" 和不變的文化特性來格式化數字 1000,則輸出為 "1,000"。

數值縮放規範:如果在緊接著明確或隱含小數點的左側指定了一或多個 ',' 字元,則每次發生數值縮放規範時,要進行格式化的數字會除以 1000。例如,如果使用字串 "0,," 來格式化數字 1 億,則其輸出為 "100"。

您可以在相同的格式字串內使用千位分隔符號和數值縮放規範。例如,如果使用字串 "#,0,," 和不變的文化特性來格式化數字 10 億,則輸出為 "1,000"。

%

百分比預留位置

格式字串中 '%' 字元的出現會使數值在格式化之前被乘以 100。適當符號會在格式字串中 '%' 出現的位置上插入數值本身。使用的百分比字元取決於目前的 NumberFormatInfo 類別。

E0

E+0

E-0

e0

e+0

e-0

科學標記法

如 果字串 'E'、'E+'、'E-'、'e'、'e+' 或 'e-' 的任何一個出現在格式字串中,並有至少一個 '0' 字元緊接其後,那麼數值將使用科學標記法,以 'E' 或 'e' 插入數字和指數之間來格式化。接在科學標記法指標之後的 '0' 字元數目將決定要輸出的指數的最少位數。'E+' 和 'e+' 格式指示正負號字元 (正號或負號) 應該一直在指數前面。"E"、"E-"、"e" 或 "e-" 格式指示正負號字元應該只能放在負數指數前面。

\

逸出字元

在 C# 和 C++ 中,反斜線字元會造成格式字串中的下一個字元被解譯為逸出序列 (Escape Sequence)。它使用於傳統格式化序列,例如 "\n" (新行)。

某些語言中,逸出字元本身當做常值 (Literal) 時,必須在前面加上逸出字元。否則,編譯器會解譯字元為逸出序列。使用字串 "\\" 來顯示 '\'。

注意,這個逸出字元在 Visual Basic 中不支援;然而,ControlChars 提供相同功能。

'ABC'

"ABC"

常值字串

含括在單引號或雙引號中的字元會複製到結果字串,並且不影響格式。

;

區段分隔符號

';' 字元被用來在格式字串中為正數、負數和零值分隔區段。

其他

所有其他字元

其他任何字元都會複製到結果字串,並且不影響格式。

另外:

十進制轉二進制& ?0 a/ |* Y  _
Console.WriteLine(Convert.ToString(123, 2));
$ |( O9 x' j2 j: I1 B, Q十進制轉八進制  V. K" O/ g0 K+ E' o" ]
Console.WriteLine(Convert.ToString(123, 8));5 c* H" C5 ~+ N  I& ?
十進制轉十六進制+ q/ B' C( g7 B" B
Console.WriteLine(Convert.ToString(123, 16));- S2 u' q; X; z8 j; f

. D/ X/ }) }, @/ [二進制轉十進制
/ `6 k/ F8 p3 C& e( ]Console.WriteLine(Convert.ToInt32(”100111101″, 2));
5 K" ~9 o6 A! y3 C: D八進制轉十進制5 U# S& g, r9 B( v1 I4 J! [
Console.WriteLine(Convert.ToInt32(”123″, 8));. `$ I( Q" h4 X9 W  A
十六進制轉十進制
% R% A! p6 Y' o' [; b# E8 P  ]8 RConsole.WriteLine(Convert.ToInt32(”FF”, 16));

三小俠  小弟獻醜,歡迎指教