标准数字格式字符串用于格式化通用数值类型。 标准数字格式字符串采用 [format specifier][precision specifier]
的形式,其中:
格式说明符是指定数字格式类型(例如货币或百分比)的单个字母字符。 任何包含一个以上字母字符(包括空白)的数字格式字符串都被解释为自定义数字格式字符串。 有关详细信息,请转到 自定义数字格式字符串。
精度说明符是一个可选整数,它影响生成的字符串中的位数。 精度说明符控制数字的字符串表示形式中的数字个数。
当精度说明符控制结果字符串中的小数位数时,结果字符串将反映一个数字,该数字舍入为最接近无限精确结果的可表示结果。
注意
精度说明符确定结果字符串中的位数。 若要用前导或尾随空格或其他字符(例如 0)填充结果字符串,请使用 Text.PadStart 和 Text.PadEnd 函数,并使用这些函数中的总长度
count
填充结果字符串。
Number.ToText 函数支持标准数值格式字符串。
标准格式说明符
下表描述标准的数字格式说明符并显示由每个格式说明符产生的示例输出。 有关使用标准数字格式字符串的其他信息,请转到“说明”部分,并转到“代码示例”部分,获取其使用的完整说明。
注意
特定区域性的格式化字符串的结果可能与以下示例不同。 你使用的系统上的操作系统设置、用户设置、环境变量和其他设置都会影响格式。
格式说明符 | “属性” | 说明 | 示例 |
---|---|---|---|
“C”或“c” | 货币 | 结果:货币值。 受以下类型支持:所有数值类型。 精度说明符:十进制小数位数。 默认精度说明符:由区域性定义。 更多信息:货币(“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” | 定点 | 结果:整数和十进制小数,负号可选。 受以下类型支持:所有数值类型。 精度说明符:十进制小数位数。 默认精度说明符:由区域性定义。 更多信息:定点(“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” | 数字 | 结果:整数和十进制小数、组分隔符和十进制小数分隔符,负号可选。 受以下类型支持:所有数值类型。 精度说明符:所需的小数位数。 默认精度说明符:由区域性定义。 更多信息:数字(“N”)格式说明符。 |
1234.567 (“N”, en-US) -> 1,234.57 1234.567 (“N”, ru-RU) -> 1 234,57 1234 (“N1”, en-US) -> 1,234.0 1234 (“N1”, ru-RU) -> 1 234,0 -1234.56 (“N3”, en-US) -> -1,234.560 -1234.56 (“N3”, ru-RU) -> -1 234,560 |
“P”或“p” | 百分比 | 结果:数字乘以 100 并以百分比符号显示。 受以下类型支持:所有数值类型。 精度说明符:所需的小数位数。 默认精度说明符:由区域性定义。 更多信息:百分比(“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 % |
“X”或“x” | 十六进制 | 结果:十六进制字符串。 受以下类型支持:仅限整型类型。 精度说明符:结果字符串中的位数。 有关详细信息,请参阅十六进制(“X”)格式说明符。 |
255 (“X”) -> FF -1 (“x”) -> ff 255 (“x4”) -> 00ff -1 (“X4”) -> 00FF |
任何其他单个字符 | 未知说明符 | 结果:在运行时引发表达式错误。 |
使用标准数字格式字符串
标准数值格式字符串可用于定义数值的格式。 它可以传递给 Number.ToTextformat
参数。 下面的示例将数值的格式设置为当前区域性(在此示例中,为 en-US 区域性)中的货币字符串。
Number.ToText(123.456, "C2")
// Displays $123.46
(可选)可以在 count
和 Text.PadStart 函数中提供 Text.PadEnd 参数,以指定数值字段的宽度以及其值是右对齐还是左对齐。 例如,以下示例在 28 个字符的字段中左对齐货币值,并在 14 个字符的字段中右对齐货币值(使用单空格字体时)。
let
amounts = {16305.32, 18794.16},
result = Text.Format(" Beginning Balance Ending Balance#(cr,lf) #{0}#{1}",
{
Text.PadEnd(Number.ToText(amounts{0}, "C2"), 28),
Text.PadStart(Number.ToText(amounts{1}, "C2"), 14)
})
in
result
// Displays:
// Beginning Balance Ending Balance
// $16,305.32 $18,794.16
以下各节提供有关每个标准数字格式字符串的详细信息。
货币格式说明符 (C)
“C”(或货币)格式说明符将数字转换为表示货币金额的字符串。 精度说明符指示结果字符串中的所需小数位数。 如果省略精度说明符,则用于货币值的默认小数位数为 2。
如果要设置格式的值的小数位数多于指定或默认数量,将在结果字符串中舍入小数值。 如果指定的小数位数右侧的值大于或等于 5,则结果字符串中的最后一位数将向远离零的一侧舍入。
结果字符串受当前区域性的格式设置信息的影响。
下面的示例使用货币格式说明符设置 值的格式:
let
Source =
{
Number.ToText(12345.6789, "C"),
Number.ToText(12345.6789, "C3"),
Number.ToText(12345.6789, "C3", "da-DK")
}
in
Source
// The example displays the following list on a system whose
// current culture is English (United States):
// $12,345.68
// $12,345.679
// 12.345,679 kr.
十进制格式说明符 (D)
“D”(或十进制)格式说明符将数字转换为十进制数字 (0-9) 的字符串,如果数字为负,则前面加负号。 只有整型才支持此格式。
精度说明符指示结果字符串中所需的最少数字个数。 如果需要的话,则用零填充该数字的左侧,以产生精度说明符给定的数字个数。 如果未指定精度说明符,则默认值为表示不带前导零的整数所需的最小值。
结果字符串受当前区域性的格式设置信息的影响。
以下示例使用十进制格式说明符设置值的格式。
let
Source =
{
Number.ToText(12345, "D"),
// Displays 12345
Number.ToText(12345, "D8"),
// Displays 00012345
Number.ToText(-12345, "D"),
// Displays -12345
Number.ToText(-12345, "D8")
// Displays -00012345
}
in
Source
指数格式说明符 (E)
指数(“E”)格式说明符将数字转换为“-d.ddd…E+ddd”或“-d.ddd…e+ddd”形式的字符串,其中每个“d”表示一个数字 (0-9)。 如果该数字为负,则该字符串以减号开头。 小数点前总是恰好有一个数字。
精度说明符指示小数点后所需的位数。 如果省略精度说明符,则使用默认值,即小数点后六位数字。
格式说明符的大小写指示为指数加前缀“E”还是“e”。 指数总是由正号或负号以及最少三位数字组成。 如果需要,用零填充指数以满足最少三位数字的要求。
结果字符串受当前区域性的格式设置信息的影响。
下面的示例使用指数格式说明符设置 值的格式:
let
Source =
{
Number.ToText(12345.6789, "E", ""),
// Displays 1.234568E+004
Number.ToText(12345.6789, "E10", ""),
// Displays 1.2345678900E+004
Number.ToText(12345.6789, "e4", ""),
// 1.2346e+004
Number.ToText(12345.6789, "E", "fr-FR")
// Displays 1,234568E+004
}
in
Source
注意
上一个示例中 Number.ToText 的最后一个参数中的空白文本值(“”)是指固定区域性。
定点格式说明符 (F)
定点(“F”)格式说明符将数字转换为“-ddd.ddd…”形式的字符串,其中每个“d”表示一个数字 (0-9)。 如果该数字为负,则该字符串以减号开头。
精度说明符指示所需的小数位数。 如果省略精度说明符,则数值中使用的小数位数的默认数字为 2。
结果字符串受当前区域性的格式设置信息的影响。
以下示例使用固定点格式说明符设置双精度值和整数值的格式:
let
Source =
{
Number.ToText(17843, "F", ""),
// Displays 17843.00
Number.ToText(-29541, "F3", ""),
// Displays -29541.000
Number.ToText(18934.1879, "F", ""),
// Displays 18934.19
Number.ToText(18934.1879, "F0", ""),
// Displays 18934
Number.ToText(-1898300.1987, "F1", ""),
// Displays -1898300.2
Number.ToText(-1898300.1987, "F3", "es-ES")
// Displays -1898300,199
}
in
Source
常规格式说明符 (G)
根据数字类型以及是否存在精度说明符,常规(“G”)格式说明符将数字转换为更紧凑的定点表示法或科学记数法。 精度说明符定义可以出现在结果字符串中的最大有效位数。 如果精度说明符被省略或为零,则数字的类型决定默认精度,如下表所示。
数值类型 | 默认值精度 |
---|---|
Byte.Type 或 Int8.Type |
3 位 |
Int16.Type |
5 位 |
Int32.Type |
10 位 |
Int64.Type |
19 位 |
Single.Type |
9 位数 |
Double.Type |
17 位数字 |
Decimal.Type |
15 位数 |
如果用科学记数法表示数字时指数大于 -5 而且小于精度说明符,则使用定点表示法;否则使用科学记数法。 结果包含小数点(如果需要),并且忽略小数点后面的尾部零。 如果精度说明符存在,并且结果的有效位数超过指定精度,则通过舍入移除多余的尾部数字。
但是,如果数字是 Decimal.Type
并且省略精度说明符,将总是使用定点表示法并保留尾部零。
使用科学记数法时,如果格式说明符是“G”,则结果的指数带前缀“E”;如果格式说明符是“g”,则结果的指数带前缀“e”。 指数最少包含两个数字。 这与由指数格式说明符生成的科学记数法的格式不同,后者在指数中最少包括三个数字。
结果字符串受当前区域性的格式设置信息的影响。
下面的示例使用常规格式说明符设置各种浮点值的格式:
let
Source =
{
Number.ToText(12345.6789, "G", ""),
// Displays 12345.6789
Number.ToText(12345.6789, "G", "fr-FR"),
// Displays 12345,6789
Number.ToText(12345.6789, "G7", ""),
// Displays 12345.68
Number.ToText(.0000023, "G", ""),
// Displays 2.3E-06
Number.ToText(.0000023, "G", "fr-FR"),
// Displays 2,3E-06
Number.ToText(.0023, "G", ""),
// Displays 0.0023
Number.ToText(1234, "G2", ""),
// Displays 1.2E+03
Number.ToText(Number.PI, "G5", "")
// Displays 3.1416
}
in
Source
数字格式说明符 (N)
数字("N")格式说明符将数字转换为"-d,ddd,ddd.ddd…"形式的字符串,其中"-"表示负数符号(如果需要),"d"表示数字 (0-9),","表示组分隔符,"."表示小数点符号。 精度说明符指示小数点后所需的位数。 如果省略精度说明符,则小数位数由当前区域性定义。
结果字符串受当前区域性的格式设置信息的影响。
下面的示例使用数字格式说明符设置各种浮点值的格式:
let
Source =
{
Number.ToText(-12445.6789, "N", ""),
// Displays -12,445.68
Number.ToText(-12445.6789, "N1", "sv-SE"),
// Displays -12 445,7
Number.ToText(123456789, "N1", "")
// Displays 123,456,789.0
}
in
Source
百分比格式说明符 (P)
百分比(“P”)格式说明符将数字乘以 100 并将其转换为表示百分比的字符串。 精度说明符指示所需的小数位数。 如果省略精度说明符,则使用当前区域性提供的默认数值精度。
下面的示例使用百分比格式说明符设置浮点值的格式:
let
Source =
{
Number.ToText(.2468013, "P", ""),
// Displays 24.68 %
Number.ToText(.2468013, "P", "hr-HR"),
// Displays 24,68 %
Number.ToText(.2468013, "P1", "en-US")
// Displays 24.7%
}
in
Source
十六进制格式说明符 (X)
十六进制(“X”)格式说明符将数字转换为十六进制数的字符串。 格式说明符的大小写指示对大于 9 的十六进制数使用大写字符还是小写字符。 例如,使用“X”产生“ABCDEF”,使用“x”产生“abcdef”。 只有整型才支持此格式。
精度说明符指示结果字符串中所需的最少数字个数。 如果需要的话,则用零填充该数字的左侧,以产生精度说明符给定的数字个数。
结果字符串不受当前区域性的格式设置信息的影响。
下面的示例使用十六进制数法格式说明符设置 值的格式。
let
Source =
{
Number.ToText(0x2045e, "x"),
// Displays 2045e
Number.ToText(0x2045e, "X"),
// Displays 2045E
Number.ToText(0x2045e, "X8"),
// Displays 0002045E
Number.ToText(123456789, "X"),
// Displays 75BCD15
Number.ToText(123456789, "X2")
// Displays 75BCD15
}
in
Source
说明
本部分包含有关使用标准数字格式字符串的其他信息。
整型和浮点型数值类型
对标准数字格式说明符的一些说明涉及到整型或浮点型数值类型。 整型数值类型为Byte.Type
、、Int8.Type
Int16.Type
和Int32.Type
Int64.Type
。 浮点型数值类型有 Decimal.Type
、Single.Type
和 Double.Type
。
浮点型无穷大和 NaN
无论格式字符串如何,如果 Decimal.Type
、Single.Type
或 Double.Type
浮点类型的值为正无穷大、负无穷大或非数字(NaN),则格式化字符串是当前适用区域性指定的相应 Number.PositiveInfinity、Number.NegativeInfinity或 Number.NaN 常量的值。
代码示例
以下示例使用 en-US 区域性和所有标准数值格式说明符设置浮点和整型数值的格式。 此示例使用两种特定的数值类型(Double.Type
和Int32.Type
),但对于其他任何数值基类型(Byte.Type
、、Decimal.Type
、Int8.Type
Int16.Type
、和Int64.Type
)Single.Type
将产生类似的结果。
let
// Display text representations of numbers for en-US culture
culture = "en-US",
// Output floating point values
floating = Double.From(10761.937554),
#"Floating results" =
{
Text.Format("C: #{0}", {Number.ToText(floating, "C", culture)}), // Displays "C: $10,761.94"
Text.Format("E: #{0}", {Number.ToText(floating, "E03", culture)}), // Displays "E: 1.076E+004"
Text.Format("F: #{0}", {Number.ToText(floating, "F04", culture)}), // Displays "F: 10761.9376"
Text.Format("G: #{0}", {Number.ToText(floating, "G", culture)}), // Displays "G: 10761.937554"
Text.Format("N: #{0}", {Number.ToText(floating, "N03", culture)}), // Displays "N: 10,761.938"
Text.Format("P: #{0}", {Number.ToText(floating/10000, "P02", culture)}) // Displays "P: 107.62%"
},
// Output integral values
integral = Int32.From(8395),
#"Integral results" =
{
Text.Format("C: #{0}", {Number.ToText(integral, "C", culture)}), // Displays "C: $8,395.00"
Text.Format("D: #{0}", {Number.ToText(integral, "D6", culture)}), // Displays "D: 008395"
Text.Format("E: #{0}", {Number.ToText(integral, "E03", culture)}), // Displays "E: 8.395E+003"
Text.Format("F: #{0}", {Number.ToText(integral, "F01", culture)}), // Displays "F: 8395.0"
Text.Format("G: #{0}", {Number.ToText(integral, "G", culture)}), // Displays "G: 8395"
Text.Format("N: #{0}", {Number.ToText(integral, "N01", culture)}), // Displays "N: 8,395.0"
Text.Format("P: #{0}", {Number.ToText(integral/10000, "P02", culture)}), // Displays "P: 83.95%"
Text.Format("X: 0x#{0}", {Number.ToText(integral, "X", culture)}) // Displays "X: 0x20CB"
},
results = #"Floating results" & #"Integral results"
in
results