標準數值格式字串
更新:2011 年 3 月
標準數值格式字串會用來格式化一般數字型別。 標準數值格式字串會採用 Axx 格式,其中 A 是一個字母字元,稱為格式規範,而 xx 則是一個選擇性的整數,稱為精確度規範。 精確度規範的範圍從 0 到 99,而且會影響結果內的位數。 任何包含一個以上字母字元 (包含泛空白字元 (White Space)) 的數值格式字串都會解譯為自訂數值格式字串。 如需詳細資訊,請參閱自訂數值格式字串。
所有數字型別的 ToString 方法的一些多載可支援標準數值格式字串。 例如,您可以提供數值格式字串給 Int32 型別的 ToString(String) 和 ToString(String, IFormatProvider) 方法。 .NET Framework 的複合格式功能也支援標準數值格式字串,此功能是由 Console 與 StreamWriter 類別的某些 Write 方法,以及 WriteLine 方法、String.Format、方法和 StringBuilder.AppendFormat 方法所使用。
秘訣 |
---|
您可以下載格式化公用程式 (英文),這個應用程式可讓您將格式字串套用至數值或日期和時間值,並且顯示結果字串。 |
下表描述標準數值格式規範,並顯示每個格式範例所產生的範例輸出。 如需使用標準數值格式字串的詳細資訊,請參閱注意一節,如需其用法的完整解說,請參閱範例一節。
格式規範 |
名稱 |
說明 |
範例 |
---|---|---|---|
"C" 或 "c" |
貨幣 |
結果:貨幣值。 支援的型別:所有數字型別。 有效位數規範:小數位數的數目。 預設有效位數規範:由 System.Globalization.NumberFormatInfo 定義。 詳細資訊:貨幣 ("C") 格式規範。 |
123.456 ("C", en-US) -> $123.46 123.456 ("C", fr-FR) -> 123,46 € 123.456 ("C", ja-JP) -> ¥123 -123.456 ("C3", en-US) -> ($123.456) -123.456 ("C3", fr-FR) -> -123,456 € -123.456 ("C3", ja-JP) -> -¥123.456 |
"D" 或 "d" |
十進位 |
結果:帶選擇性負號的整數位數。 支援的型別:只有整數型別。 精確度規範:最少位數。 預設精確度規範:必要的最少位數。 詳細資訊:十進位 ("D") 格式規範。 |
1234 ("D") -> 1234 -1234 ("D6") -> -001234 |
"E" 或 "e" |
指數 (科學記號) |
結果:指數標記法。 支援的型別:所有數字型別。 有效位數規範:小數位數的數目。 預設精確度規範:6。 詳細資訊:指數 ("E") 格式規範。 |
1052.0329112756 ("E", en-US) -> 1.052033E+003 1052.0329112756 ("e", fr-FR) -> 1,052033e+003 -1052.0329112756 ("e2", en-US) -> -1.05e+003 -1052.0329112756 ("E2", fr_FR) -> -1,05E+003 |
"F" 或 "f" |
固定點 |
結果:帶選擇性負號的整數和小數位數。 支援的型別:所有數字型別。 有效位數規範:小數位數的數目。 預設有效位數規範:由 System.Globalization.NumberFormatInfo 定義。 詳細資訊:固定點 ("F") 格式規範。 |
1234.567 ("F", en-US) -> 1234.57 1234.567 ("F", de-DE) -> 1234,57 1234 ("F1", en-US) -> 1234.0 1234 ("F1", de-DE) -> 1234,0 -1234.56 ("F4", en-US) -> -1234.5600 -1234.56 ("F4", de-DE) -> -1234,5600 |
"G" 或 "g" |
一般 |
結果:固定點和科學標記法兩者中最精簡的一個。 支援的型別:所有數字型別。 精確度規範:有效位數。 預設精確度規範:因數字型別而異。 詳細資訊:一般 ("G") 格式規範。 |
-123.456 ("G", en-US) -> -123.456 123.456 ("G", sv-SE) -> -123,456 123.4546 ("G4", en-US) -> 123.5 123.4546 ("G4", sv-SE) -> 123,5 -1.234567890e-25 ("G", en-US) -> -1.23456789E-25 -1.234567890e-25 ("G", sv-SE) -> -1,23456789E-25 |
"N" 或 "n" |
數字 |
結果:帶選擇性負號的整數和小數位數、群組分隔符號,以及小數分隔符號。 支援的型別:所有數字型別。 精確度規範:想要的小數位數。 預設有效位數規範:由 System.Globalization.NumberFormatInfo 定義。 詳細資訊:數值 ("N") 格式規範。 |
1234.567 ("N", en-US) -> 1,234.57 1234.567 ("N", ru-RU) -> 1 234,57 1234 ("N", en-US) -> 1,234.0 1234 ("N", ru-RU) -> 1 234,0 -1234.56 ("N", en-US) -> -1,234.560 -1234.56 ("N", ru-RU) -> -1 234,560 |
"P" 或 "p" |
百分比 |
結果:乘以 100 並加上百分比符號來顯示的數字。 支援的型別:所有數字型別。 精確度規範:想要的小數位數。 預設有效位數規範:由 System.Globalization.NumberFormatInfo 定義。 詳細資訊:百分比 ("P") 格式規範。 |
1 ("P", en-US) -> 100.00 % 1 ("P", fr-FR) -> 100,00 % -0.39678 ("P1", en-US) -> -39.7 % -0.39678 ("P1", fr-FR) -> -39,7 % |
"R" 或 "r" |
來回 |
結果:可以來回轉換為相同數字的字串。 支援的型別:Single、Double 和 BigInteger。 精確度規範:忽略。 詳細資訊:來回 ("R") 格式規範。 |
123456789.12345678 ("R") -> 123456789.12345678 -1234567890.12345678 ("R") -> -1234567890.1234567 |
"X" 或 "x" |
十六進位 |
結果:十六進位字串。 支援的型別:只有整數型別。 精確度規範:結果字串中的位數。 詳細資訊:十六進位 ("X") 格式規範。 |
255 ("X") -> FF -1 ("x") -> ff 255 ("x4") -> 00ff -1 ("X4") -> 00FF |
任何其他單一字元 |
未知的規範 |
結果:在執行階段擲回 FormatException。 |
使用標準數值格式字串
使用標準數值格式字串來定義數值的格式有兩種方式:
您可以將它傳遞至具有 format 參數之 ToString 方法的多載。 下列範例會以目前 (在此範例中是 en-US) 文化特性將數值格式化為貨幣字串。
Dim value As Decimal = 123.456d Console.WriteLine(value.ToString("C2")) ' Displays $123.46
decimal value = 123.456m; Console.WriteLine(value.ToString("C2")); // Displays $123.46
您可以在搭配 String.Format、Console.WriteLine 和 StringBuilder.AppendFormat 等方法一起使用的格式項目中,提供它做為 formatString 參數。 如需詳細資訊,請參閱 複合格式。 下列範例會使用格式項目,在字串中插入貨幣值。
Dim value As Decimal = 123.456d Console.WriteLine("Your account balance is {0:C2}.", value) ' Displays "Your account balance is $123.46."
decimal value = 123.456m; Console.WriteLine("Your account balance is {0:C2}.", value); // Displays "Your account balance is $123.46."
下列各節提供每個標準數值格式字串的詳細資訊。
貨幣 ("C") 格式規範
"C" (表示貨幣) 格式規範會將數字轉換為表示貨幣金額的字串。 精確度規範表示在結果字串中所需要的小數位數。 如果省略精確度規範,則預設有效位數會由 NumberFormatInfo.CurrencyDecimalDigits 屬性定義。
如果要格式化的值擁有的小數位數超過指定或預設的小數位數,則分數值會在結果字串中四捨五入。 如果指定的小數位數右邊的值為 5 或更大值,則結果字串中的最後一位數會遠離零四捨五入。
結果字串會受到目前 NumberFormatInfo 物件的格式設定資訊所影響。 下表列出 NumberFormatInfo 屬性,這些屬性控制傳回之字串的格式設定。
NumberFormatInfo 屬性 |
說明 |
---|---|
定義正值的貨幣符號位置。 |
|
定義負值的貨幣符號位置,並指定負號是以括號還是 NegativeSign 屬性來表示。 |
|
定義在 CurrencyNegativePattern 表示不使用括號時所使用的負號。 |
|
定義貨幣符號。 |
|
定義貨幣值中的預設小數位數。 您可以使用有效位數規範來覆寫這個值。 |
|
定義分隔整數與小數位數的字串。 |
|
定義分隔整數群組的字串。 |
|
定義整數部分的每個群組中出現的整數位數。 |
下列範例會使用貨幣格式規範格式化 Double 值。
Dim value As Double = 12345.6789
Console.WriteLine(value.ToString("C", CultureInfo.CurrentCulture))
Console.WriteLine(value.ToString("C3", CultureInfo.CurrentCulture))
Console.WriteLine(value.ToString("C3", _
CultureInfo.CreateSpecificCulture("da-DK")))
' The example displays the following output on a system whose
' current culture is English (United States):
' $12,345.68
' $12,345.679
' kr 12.345,679
double value = 12345.6789;
Console.WriteLine(value.ToString("C", CultureInfo.CurrentCulture));
Console.WriteLine(value.ToString("C3", CultureInfo.CurrentCulture));
Console.WriteLine(value.ToString("C3",
CultureInfo.CreateSpecificCulture("da-DK")));
// The example displays the following output on a system whose
// current culture is English (United States):
// $12,345.68
// $12,345.679
// kr 12.345,679
回到表格
十進位 ("D") 格式規範
"D" (表示十進位) 格式規範會將數字轉換為十進位數 (0-9) 的字串,如果數字為負數,則在前面加上負號。 只有整數類資料型別 (Integral Type) 才支援這個格式。
精確度規範指示產生的字串中所需要的最少位數。 如果有必要,數值以零填補其左邊,產生精確度規範所指定的位數。 如果未指定精確度規範,則預設值為在不填補前置零的情況下,表示整數所需的最小值。
結果字串會受到目前 NumberFormatInfo 物件的格式設定資訊所影響。 如下表所示,只有一個屬性會影響結果字串的格式設定。
NumberFormatInfo 屬性 |
說明 |
---|---|
定義表示數字為負數的字串。 |
下列範例會使用十進位格式規範來格式化 Int32 值。
Dim value As Integer
value = 12345
Console.WriteLine(value.ToString("D"))
' Displays 12345
Console.WriteLine(value.ToString("D8"))
' Displays 00012345
value = -12345
Console.WriteLine(value.ToString("D"))
' Displays -12345
Console.WriteLine(value.ToString("D8"))
' Displays -00012345
int value;
value = 12345;
Console.WriteLine(value.ToString("D"));
// Displays 12345
Console.WriteLine(value.ToString("D8"));
// Displays 00012345
value = -12345;
Console.WriteLine(value.ToString("D"));
// Displays -12345
Console.WriteLine(value.ToString("D8"));
// Displays -00012345
回到表格
指數 ("E") 格式規範
指數 ("E") 格式規範會將數字轉換為 "-d.ddd…E+ddd" 或 "-d.ddd…e+ddd" 形式的字串,其中 "d" 表示數字 (0-9)。 字串以負號開始,如果數值為負數的話。 在小數點前面永遠會有確切一個位數。
精確度規範指示小數點之後需要的位數。 如果省略精確度規範,則使用小數點之後有六位數的預設值。
格式規範的大小寫表示要在指數之前加上 "E" 還是 "e"。 指數永遠由正號或負號和最少三位數所組成。 必要時,指數將以零填補來符合指定的最少位數。
結果字串會受到目前 NumberFormatInfo 物件的格式設定資訊所影響。 下表列出 NumberFormatInfo 屬性,這些屬性控制傳回之字串的格式設定。
NumberFormatInfo 屬性 |
說明 |
---|---|
定義表示數字在係數和指數部分都是負數的字串。 |
|
定義將係數中的整數位數與小數位數分隔的字串。 |
|
定義表示指數為正數的字串。 |
下列範例會使用指數格式規範來格式化 Double 值。
Dim value As Double = 12345.6789
Console.WriteLine(value.ToString("E", CultureInfo.InvariantCulture))
' Displays 1.234568E+004
Console.WriteLine(value.ToString("E10", CultureInfo.InvariantCulture))
' Displays 1.2345678900E+004
Console.WriteLine(value.ToString("e4", CultureInfo.InvariantCulture))
' Displays 1.2346e+004
Console.WriteLine(value.ToString("E", _
CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 1,234568E+004
double value = 12345.6789;
Console.WriteLine(value.ToString("E", CultureInfo.InvariantCulture));
// Displays 1.234568E+004
Console.WriteLine(value.ToString("E10", CultureInfo.InvariantCulture));
// Displays 1.2345678900E+004
Console.WriteLine(value.ToString("e4", CultureInfo.InvariantCulture));
// Displays 1.2346e+004
Console.WriteLine(value.ToString("E",
CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 1,234568E+004
回到表格
固定點 ("F") 格式規範
固定點 ("F") 格式規範會將數字轉換為 "-ddd.ddd…" 形式的字串,其中 "d" 表示數字 (0-9)。 字串以負號開始,如果數值為負數的話。
精確度規範指示所需要的小數位數。 如果省略精確度規範,則會由目前 NumberFormatInfo.NumberDecimalDigits 屬性提供數值有效位數。
結果字串會受到目前 NumberFormatInfo 物件的格式設定資訊所影響。 下表列出 NumberFormatInfo 物件的屬性,這些屬性控制結果字串的格式設定。
NumberFormatInfo 屬性 |
說明 |
---|---|
定義表示數字為負數的字串。 |
|
定義分隔整數位數與小數位數的字串。 |
|
定義小數位數的預設數目。 您可以使用有效位數規範來覆寫這個值。 |
下列範例會使用定點格式規範格式化 Double 和 Int32 值。
Dim integerNumber As Integer
integerNumber = 17843
Console.WriteLine(integerNumber.ToString("F", CultureInfo.InvariantCulture))
' Displays 17843.00
integerNumber = -29541
Console.WriteLine(integerNumber.ToString("F3", CultureInfo.InvariantCulture))
' Displays -29541.000
Dim doubleNumber As Double
doubleNumber = 18934.1879
Console.WriteLine(doubleNumber.ToString("F", CultureInfo.InvariantCulture))
' Displays 18934.19
Console.WriteLine(doubleNumber.ToString("F0", CultureInfo.InvariantCulture))
' Displays 18934
doubleNumber = -1898300.1987
Console.WriteLine(doubleNumber.ToString("F1", CultureInfo.InvariantCulture))
' Displays -1898300.2
Console.WriteLine(doubleNumber.ToString("F3", _
CultureInfo.CreateSpecificCulture("es-ES")))
' Displays -1898300,199
int integerNumber;
integerNumber = 17843;
Console.WriteLine(integerNumber.ToString("F",
CultureInfo.InvariantCulture));
// Displays 17843.00
integerNumber = -29541;
Console.WriteLine(integerNumber.ToString("F3",
CultureInfo.InvariantCulture));
// Displays -29541.000
double doubleNumber;
doubleNumber = 18934.1879;
Console.WriteLine(doubleNumber.ToString("F", CultureInfo.InvariantCulture));
// Displays 18934.19
Console.WriteLine(doubleNumber.ToString("F0", CultureInfo.InvariantCulture));
// Displays 18934
doubleNumber = -1898300.1987;
Console.WriteLine(doubleNumber.ToString("F1", CultureInfo.InvariantCulture));
// Displays -1898300.2
Console.WriteLine(doubleNumber.ToString("F3",
CultureInfo.CreateSpecificCulture("es-ES")));
// Displays -1898300,199
回到表格
一般 ("G") 格式規範
一般 ("G") 格式規範會將數字轉換為固定點和科學標記法兩者中最精簡的一個,視數字的型別以及精確度規範是否存在而定。 精確度規範定義結果字串中最多可顯示的有效位數。 如果精確度規範已省略或為零,則由數字的型別決定預設有效位數,如下表所示。
數字型別 |
預設有效位數 |
---|---|
3 位數 |
|
5 位數 |
|
10 位數 |
|
19 位數 |
|
20 位數 |
|
29 位數 |
|
7 位數 |
|
15 位數 |
|
29 位數 |
如果以科學標記法來表示數字所產生的指數大於 -5 而且小於精確度規範,則會使用固定點標記法,否則使用科學標記法。 必要時,結果會包含小數點並省略小數點後最後幾個零。 如果精確度規範存在,且結果中的有效位數超過指定的有效位數,則會四捨五入來移除超出的尾端位數。
不過,如果數字是 Decimal,而且省略精確度規範,則一律會使用固定點標記法,並且保留尾端的零。
使用科學標記法時,結果中的指數前面會加上 "E" (如果格式規範為 "G") 或 "e" (如果格式規範為 "g")。 指數至少包含兩位數。 這不同於指數格式規範所產生的科學標記法格式,此格式會在指數中包含至少三位數。
結果字串會受到目前 NumberFormatInfo 物件的格式設定資訊所影響。 下表列出可控制結果字串之格式設定的 NumberFormatInfo 屬性。
NumberFormatInfo 屬性 |
說明 |
---|---|
定義表示數字為負數的字串。 |
|
定義分隔整數位數與小數位數的字串。 |
|
定義小數位數的預設數目。 您可以使用有效位數規範來覆寫這個值。 |
|
定義表示指數為正數的字串。 |
下列範例會使用一般格式規範來格式化各種浮點數值。
Dim number As Double
number = 12345.6789
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture))
' Displays 12345.6789
Console.WriteLine(number.ToString("G", _
CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 12345,6789
Console.WriteLine(number.ToString("G7", CultureInfo.InvariantCulture))
' Displays 12345.68
number = .0000023
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture))
' Displays 2.3E-06
Console.WriteLine(number.ToString("G", _
CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 2,3E-06
number = .0023
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture))
' Displays 0.0023
number = 1234
Console.WriteLine(number.ToString("G2", CultureInfo.InvariantCulture))
' Displays 1.2E+03
number = Math.Pi
Console.WriteLine(number.ToString("G5", CultureInfo.InvariantCulture))
' Displays 3.1416
double number;
number = 12345.6789;
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture));
// Displays 12345.6789
Console.WriteLine(number.ToString("G",
CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 12345,6789
Console.WriteLine(number.ToString("G7", CultureInfo.InvariantCulture));
// Displays 12345.68
number = .0000023;
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture));
// Displays 2.3E-06
Console.WriteLine(number.ToString("G",
CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 2,3E-06
number = .0023;
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture));
// Displays 0.0023
number = 1234;
Console.WriteLine(number.ToString("G2", CultureInfo.InvariantCulture));
// Displays 1.2E+03
number = Math.PI;
Console.WriteLine(number.ToString("G5", CultureInfo.InvariantCulture));
// Displays 3.1416
回到表格
數值 ("N") 格式規範
數字 ("N") 格式規範會將數字轉換為 "-d,ddd,ddd.ddd…" 形式的字串,其中 "-" 表示負數符號 (如有需要)、"d" 表示數字 (0-9)、"," 表示群組分隔符號,而 "." 表示小數點符號。 精確度規範指示小數點之後需要的位數。 如果省略精確度規範,則小數位數會由目前的 NumberFormatInfo.NumberDecimalDigits 屬性定義。
結果字串會受到目前 NumberFormatInfo 物件的格式設定資訊所影響。 下表列出可控制結果字串之格式設定的 NumberFormatInfo 屬性。
NumberFormatInfo 屬性 |
說明 |
---|---|
定義表示數字為負數的字串。 |
|
定義負值的格式,並指定負號是以括號還是 NegativeSign 屬性來表示。 |
|
定義在群組分隔符號之間出現的整數位數。 |
|
定義分隔整數群組的字串。 |
|
定義分隔整數與小數位數的字串。 |
|
定義小數位數的預設數目。 您可以使用精確度規範來覆寫這個值。 |
下列範例會使用數字格式規範來格式化各種浮點數值。
Dim dblValue As Double = -12445.6789
Console.WriteLine(dblValue.ToString("N", CultureInfo.InvariantCulture))
' Displays -12,445.68
Console.WriteLine(dblValue.ToString("N1", _
CultureInfo.CreateSpecificCulture("sv-SE")))
' Displays -12 445,7
Dim intValue As Integer = 123456789
Console.WriteLine(intValue.ToString("N1", CultureInfo.InvariantCulture))
' Displays 123,456,789.0
double dblValue = -12445.6789;
Console.WriteLine(dblValue.ToString("N", CultureInfo.InvariantCulture));
// Displays -12,445.68
Console.WriteLine(dblValue.ToString("N1",
CultureInfo.CreateSpecificCulture("sv-SE")));
// Displays -12 445,7
int intValue = 123456789;
Console.WriteLine(intValue.ToString("N1", CultureInfo.InvariantCulture));
// Displays 123,456,789.0
回到表格
百分比 ("P") 格式規範
百分比 ("P") 格式規範會將數字乘以 100,然後轉換為表示百分比的字串。 精確度規範指示所需要的小數位數。 如果省略精確度規範,則會使用目前 PercentDecimalDigits 屬性所提供的預設數值有效位數。
下表列出 NumberFormatInfo 屬性,這些屬性控制傳回之字串的格式設定。
NumberFormatInfo 屬性 |
說明 |
---|---|
定義正值的百分比符號位置。 |
|
定義負值的百分比符號位置和負號位置。 |
|
定義表示數字為負數的字串。 |
|
定義百分比符號。 |
|
定義百分比值中的預設小數位數。 您可以使用有效位數規範來覆寫這個值。 |
|
定義分隔整數與小數位數的字串。 |
|
定義分隔整數群組的字串。 |
|
定義整數部分的每個群組中出現的整數位數。 |
下列範例會使用百分比格式規範來格式化浮點數值。
Dim number As Double = .2468013
Console.WriteLine(number.ToString("P", CultureInfo.InvariantCulture))
' Displays 24.68 %
Console.WriteLine(number.ToString("P", _
CultureInfo.CreateSpecificCulture("hr-HR")))
' Displays 24,68%
Console.WriteLine(number.ToString("P1", CultureInfo.InvariantCulture))
' Displays 24.7 %
double number = .2468013;
Console.WriteLine(number.ToString("P", CultureInfo.InvariantCulture));
// Displays 24.68 %
Console.WriteLine(number.ToString("P",
CultureInfo.CreateSpecificCulture("hr-HR")));
// Displays 24,68%
Console.WriteLine(number.ToString("P1", CultureInfo.InvariantCulture));
// Displays 24.7 %
回到表格
來回 ("R") 格式規範
來回 ("R) 格式規範可保證轉換為字串的數值一定可以剖析回到相同數值。 只有 Single、Double 和 BigInteger 型別才支援這個格式。
使用這個規範來格式化 BigInteger 值時,這個值的字串表示會包含 BigInteger 值中的所有有效位數。 使用這個規範來格式化 Single 或 Double 值時,則會先使用一般格式來測試該值 (對 Double 會使用 15 位有效位數,而對 Single 會使用 7 位有效位數)。 如果該值成功地剖析回到相同數值,即會使用一般格式規範來格式化。 如果該值無法成功地剖析回到相同數值,即會使用 17 位有效位數 (如果是 Double) 或 9 位有效位數 (如果是 Single) 來格式化該值。
雖然您可以包含精確度規範,但該規範會被忽略。 使用來回規範時,這個規範優先於精確度規範。
結果字串會受到目前 NumberFormatInfo 物件的格式設定資訊所影響。 下表列出可控制結果字串之格式設定的 NumberFormatInfo 屬性。
NumberFormatInfo 屬性 |
說明 |
---|---|
定義表示數字為負數的字串。 |
|
定義分隔整數位數與小數位數的字串。 |
|
定義表示指數為正數的字串。 |
下列範例會使用往返格式規範格式化 Double 值。
Dim value As Double
value = Math.Pi
Console.WriteLine(value.ToString("r"))
' Displays 3.1415926535897931
Console.WriteLine(value.ToString("r", _
CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 3,1415926535897931
value = 1.623e-21
Console.WriteLine(value.ToString("r"))
' Displays 1.623E-21
double value;
value = Math.PI;
Console.WriteLine(value.ToString("r"));
// Displays 3.1415926535897931
Console.WriteLine(value.ToString("r",
CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 3,1415926535897931
value = 1.623e-21;
Console.WriteLine(value.ToString("r"));
// Displays 1.623E-21
回到表格
十六進位 ("X") 格式規範
十六進位 ("X") 格式規範會將數字轉換為十六進位數字的字串。 格式規範的大小寫表示對於大於 9 的十六進位數字,要使用大寫還是小寫字元。 例如,使用 "X" 會產生 "ABCDEF",使用 "x" 則會產生 "abcdef"。 只有整數類資料型別 (Integral Type) 才支援這個格式。
精確度規範指示產生的字串中所需要的最少位數。 如果有必要,數值以零填補其左邊,產生精確度規範所指定的位數。
結果字串不受目前 NumberFormatInfo 物件的格式設定資訊所影響。
下列範例會使用十六進位格式規範格式化 Int32 值。
Dim value As Integer
value = &h2045e
Console.WriteLine(value.ToString("x"))
' Displays 2045e
Console.WriteLine(value.ToString("X"))
' Displays 2045E
Console.WriteLine(value.ToString("X8"))
' Displays 0002045E
value = 123456789
Console.WriteLine(value.ToString("X"))
' Displays 75BCD15
Console.WriteLine(value.ToString("X2"))
' Displays 75BCD15
int value;
value = 0x2045e;
Console.WriteLine(value.ToString("x"));
// Displays 2045e
Console.WriteLine(value.ToString("X"));
// Displays 2045E
Console.WriteLine(value.ToString("X8"));
// Displays 0002045E
value = 123456789;
Console.WriteLine(value.ToString("X"));
// Displays 75BCD15
Console.WriteLine(value.ToString("X2"));
// Displays 75BCD15
回到表格
備註
控制台設定值
[控制台] 中 [地區及語言選項] 項目的設定會影響格式化作業所產生的結果字串。 這些設定是用來初始化與目前執行緒文化特性相關的 NumberFormatInfo 物件,該物件會提供用來管理格式的值。 使用不同設定的電腦會產生不同的結果字串。
此外,如果 CultureInfo.CultureInfo(String) 建構函式用來將新的 CultureInfo 物件具現化,而此物件代表的文化特性與目前系統文化特性相同,則 [控制台] 中的 [區域及語言選項] 項目所建立之任何自訂都會套用至 CultureInfo 物件。 您可以使用 CultureInfo.CultureInfo(String, Boolean) 建構函式來建立不反映系統自訂的 CultureInfo 物件。
NumberFormatInfo 屬性
格式會受到目前 NumberFormatInfo 物件的影響,而此物件是由目前執行緒文化特性隱含提供或由叫用格式之方法的 IFormatProvider 參數明確提供。 為該參數指定 NumberFormatInfo 或 CultureInfo 物件。
整數類資料型別和浮點數值型別
標準數值格式規範的某些描述會參考整數類資料型別或浮點數值型別。 整數數字型別為 Byte、SByte、Int16、Int32、Int64、UInt16、UInt32、UInt64 和 BigInteger。 浮點數值型別有 Decimal、Single 和 Double。
無限浮點數和 NaN
不論格式字串為何,如果 Single 或 Double 浮點型別的值為正無限大、負無限大或不是數字 (NaN),則格式化後的字串會分別是 PositiveInfinitySymbol、NegativeInfinitySymbol 或 NaNSymbol 屬性的值 (這些屬性由目前適用的 NumberFormatInfo 物件所指定)。
範例
下列範例會使用 en-US 文化特性和所有標準數值格式規範來格式化整數和浮點數值。 這個範例使用兩個特定的數字型別 (Double 和 Int32),但用於其他任何數字基底型別 (Byte、SByte、Int16、Int32、Int64、UInt16、UInt32、UInt64、BigInteger、Decimal 和 Single) 也會產生類似的結果。
Option Strict On
Imports System.Globalization
Imports System.Threading
Module NumericFormats
Public Sub Main()
' Display string representations of numbers for en-us culture
Dim ci As New CultureInfo("en-us")
' Output floating point values
Dim floating As Double = 10761.937554
Console.WriteLine("C: {0}", _
floating.ToString("C", ci)) ' Displays "C: $10,761.94"
Console.WriteLine("E: {0}", _
floating.ToString("E03", ci)) ' Displays "E: 1.076E+004"
Console.WriteLine("F: {0}", _
floating.ToString("F04", ci)) ' Displays "F: 10761.9376"
Console.WriteLine("G: {0}", _
floating.ToString("G", ci)) ' Displays "G: 10761.937554"
Console.WriteLine("N: {0}", _
floating.ToString("N03", ci)) ' Displays "N: 10,761.938"
Console.WriteLine("P: {0}", _
(floating/10000).ToString("P02", ci)) ' Displays "P: 107.62 %"
Console.WriteLine("R: {0}", _
floating.ToString("R", ci)) ' Displays "R: 10761.937554"
Console.WriteLine()
' Output integral values
Dim integral As Integer = 8395
Console.WriteLine("C: {0}", _
integral.ToString("C", ci)) ' Displays "C: $8,395.00"
Console.WriteLine("D: {0}", _
integral.ToString("D6")) ' Displays "D: 008395"
Console.WriteLine("E: {0}", _
integral.ToString("E03", ci)) ' Displays "E: 8.395E+003"
Console.WriteLine("F: {0}", _
integral.ToString("F01", ci)) ' Displays "F: 8395.0"
Console.WriteLine("G: {0}", _
integral.ToString("G", ci)) ' Displays "G: 8395"
Console.WriteLine("N: {0}", _
integral.ToString("N01", ci)) ' Displays "N: 8,395.0"
Console.WriteLine("P: {0}", _
(integral/10000).ToString("P02", ci)) ' Displays "P: 83.95 %"
Console.WriteLine("X: 0x{0}", _
integral.ToString("X", ci)) ' Displays "X: 0x20CB"
Console.WriteLine()
End Sub
End Module
using System;
using System.Globalization;
using System.Threading;
public class NumericFormats
{
public static void Main()
{
// Display string representations of numbers for en-us culture
CultureInfo ci = new CultureInfo("en-us");
// Output floating point values
double floating = 10761.937554;
Console.WriteLine("C: {0}",
floating.ToString("C", ci)); // Displays "C: $10,761.94"
Console.WriteLine("E: {0}",
floating.ToString("E03", ci)); // Displays "E: 1.076E+004"
Console.WriteLine("F: {0}",
floating.ToString("F04", ci)); // Displays "F: 10761.9376"
Console.WriteLine("G: {0}",
floating.ToString("G", ci)); // Displays "G: 10761.937554"
Console.WriteLine("N: {0}",
floating.ToString("N03", ci)); // Displays "N: 10,761.938"
Console.WriteLine("P: {0}",
(floating/10000).ToString("P02", ci)); // Displays "P: 107.62 %"
Console.WriteLine("R: {0}",
floating.ToString("R", ci)); // Displays "R: 10761.937554"
Console.WriteLine();
// Output integral values
int integral = 8395;
Console.WriteLine("C: {0}",
integral.ToString("C", ci)); // Displays "C: $8,395.00"
Console.WriteLine("D: {0}",
integral.ToString("D6", ci)); // Displays "D: 008395"
Console.WriteLine("E: {0}",
integral.ToString("E03", ci)); // Displays "E: 8.395E+003"
Console.WriteLine("F: {0}",
integral.ToString("F01", ci)); // Displays "F: 8395.0"
Console.WriteLine("G: {0}",
integral.ToString("G", ci)); // Displays "G: 8395"
Console.WriteLine("N: {0}",
integral.ToString("N01", ci)); // Displays "N: 8,395.0"
Console.WriteLine("P: {0}",
(integral/10000.0).ToString("P02", ci)); // Displays "P: 83.95 %"
Console.WriteLine("X: 0x{0}",
integral.ToString("X", ci)); // Displays "X: 0x20CB"
Console.WriteLine();
}
}
請參閱
工作
參考
概念
變更記錄
日期 |
記錄 |
原因 |
---|---|---|
2011 年 3 月 |
已加入格式化公用程式的連結。 |
資訊加強。 |
2010 年 7 月 |
已加註遠離零四捨五入是搭配 "C" 標準格式字串使用。 |
客戶回函。 |