FORMAT
根据指定的格式将值转换为文本。
语法
FORMAT(<value>, <format_string>)
参数
术语 | 定义 |
---|---|
value | 值或计算结果为单个值的表达式。 |
format_string | 具有格式模板的字符串。 |
返回值
一个字符串,它包含由 format_string 定义的格式的 value。
注释
有关如何使用 format_string 参数的详细信息,请参阅下列相应主题:
设置格式 | 按照这些说明操作 |
---|---|
数字 | 使用预定义的数字格式或者创建函数的自定义数字格式。 |
日期和时间 | 使用预定义的日期/时间格式或者创建用户定义的日期/时间格式。 |
设置结果的格式时,所有的预定义格式字符串都将使用当前用户区域设置。
注意
作为 DAX FORMAT 函数的参数支持的格式字符串基于 Visual Basic(OLE 自动化)使用的格式字符串,而非基于 .NET Framework 使用的格式字符串。因此,如果参数与任何定义的格式字符串都不匹配,您可能会获得意外结果或错误。例如,不支持将 "p" 作为 "Percent" 的缩写。对于作为参数提供给 FORMAT 函数的字符串,如果它们不包含在预定义的格式字符串列表中,则将它们作为自定义格式字符串或字符串文字的一部分进行处理。
FORMAT 函数的预定义数字格式
下表标识预定义数字格式的名称。可按名称将它们用作 Format 函数的样式参数。
格式规范 |
说明 |
---|---|
"General Number" |
显示不带千位分隔符的数字。 |
"Currency" |
显示带千位分隔符的数字(如果适用);显示小数点分隔符右侧两位。输出基于系统区域设置。 |
"Fixed" |
小数点分隔符左侧至少显示一位,右侧显示两位。 |
"Standard" |
显示带千位分隔符的数字,其中小数点分隔符左侧至少有一位,右侧有两位。 |
"Percent" |
将数字乘以 100 后显示,并在紧右侧追加百分号 (%);小数点分隔符右侧总是显示两位。 |
"Scientific" |
使用标准的科学记数法,并且提供两个有效位数。 |
"Yes/No" |
如果数字为 0,则显示 No;否则显示 Yes。 |
"True/False" |
如果数字为 0,则显示 False;否则显示 True。 |
"On/Off" |
如果数字为 0,则显示 Off;否则显示 On。 |
注释
请注意格式字符串基于 Visual Basic(OLE 自动化),因此其行为可能与 .NET Framework 使用的格式字符串的行为略有不同。不支持诸如 "P" 和 "x" 的缩写。作为参数提供给 FORMAT 函数的任何其他字符串按定义自定义格式解释。
示例
下面的示例显示如何使用不同的预定义格式字符串来设置数值的格式。
FORMAT( 12345.67, "General Number")
FORMAT( 12345.67, "Currency")
FORMAT( 12345.67, "Fixed")
FORMAT( 12345.67, "Standard")
FORMAT( 12345.67, "Percent")
FORMAT( 12345.67, "Scientific")
上面的表达式返回以下结果:
12345.67 "General Number" 显示不带格式的数字。
$12,345.67 "Currency" 用您的货币区域设置格式显示数字。此处的示例显示默认的美国货币格式。
12345.67 "Fixed" 显示小数点分隔符左侧至少有一位、小数点分隔符右侧有两位的数字。
12,345.67 "Standard" 显示小数点分隔符左侧至少有一位、小数点分隔符右侧有两位的数字,并且包括千位分隔符。此处的示例显示默认的美国数字格式。
1,234,567.00 % "Percent" 将数字显示为带格式的百分比(乘以 100),并且用单个空格分隔数字右侧的百分比符号。
1.23E+04 "Scientific" 以科学记数法显示数字并且具有两个小数位。
FORMAT 函数的自定义数字格式
用户定义的数字格式表达式可以包含一至三个部分(各部分之间用分号分隔)。如果 Format 函数的 Style 参数包含预定义的数字格式之一,则只允许有一部分。
如果您使用 |
则结果为 |
---|---|
只有一部分 |
格式表达式应用于所有值。 |
两部分 |
第一部分应用于正值和零;第二部分应用于负值。 |
三部分 |
第一部分应用于正值,第二部分应用于负值,第三部分应用于零。 |
格式规范
下表标识了可用于创建用户定义的数字格式的字符。
格式规范 |
说明 |
---|---|
无 |
显示不带格式的数字。 |
0(零字符) |
数字占位符。显示一个数字或一个零。如果表达式在格式字符串中出现零的位置有一个数字,则显示该数字,否则在该位置显示一个零。 如果数字的位数少于格式表达式中零的个数(不管在小数点的哪一侧),将显示前导零或尾随零。如果小数点分隔符右侧的数字位数多于格式表达式中小数点分隔符右侧的零的个数,将对数字四舍五入,使其小数位数与零的个数一样多。如果小数点分隔符左侧的数字位数多于格式表达式中小数点分隔符左侧的零的个数,则将显示多出的位数而不作任何修改。 |
# |
数字占位符。显示一个数字或不显示任何内容。如果表达式在格式字符串中出现 # 字符的位置有一个数字,则显示该数字,否则该位置什么也不显示。 除了当数字的位数少于格式表达式中小数点分隔符任意一侧的 # 字符数时不显示前导零或尾随零外,该符号的作用类似于零 (0) 数字占位符。 |
.(圆点字符) |
小数点占位符。小数点占位符确定在小数点分隔符左侧和右侧显示几位数。如果格式表达式中该符号的左侧只包含 # 字符,则小于 1 的数字以小数点分隔符开头。若要显示随小数显示的前导零,请使用零作为小数点分隔符左侧的第一个数字占位符。在某些区域设置中,用逗号作为小数点分隔符。在格式化输出中用作小数点占位符的实际字符取决于系统所识别的数字格式。因此,在您的格式中应将句点用作小数点占位符,即使您位于使用逗号作为小数点占位符的区域设置中。格式化字符串将以适合区域设置的正确格式显示。 |
% |
百分比占位符。将表达式乘以 100。在格式字符串中出现百分比字符的位置插入百分比字符 (%)。 |
,(逗号字符) |
千位分隔符。千位分隔符将在小数点分隔符左侧具有四位或更多位数的数字中的千位和百位分隔开。如果格式包含一个由数字占位符(0 或 #)包围的千位分隔符,则指定千位分隔符的标准用法。 一个千位分隔符紧挨小数点分隔符的左侧(无论是否指定小数)或者作为字符串中最右侧的字符表示“通过除以 1000 来将数字按比例减小,并按需要四舍五入”。小于 1,000 但大于或等于 500 的数字显示为 1,小于 500 的数字显示为 0。此位置有两个相邻千位分隔符表示按一百万倍的比例因子缩小,并且每增加一个分隔符表示另外缩小 1,000 倍。 多个分隔符出现在紧挨小数点分隔符左侧或字符串最右侧位置被视为指定使用千位分隔符。在某些区域设置中,用句点作为千位分隔符。在格式化输出中用作千位分隔符的实际字符取决于您的系统所识别的数字格式。因此,在您的格式中应将逗号用作千位分隔符,即使您位于使用句点作为千位分隔符的区域设置中。格式化字符串将以适合区域设置的正确格式显示。 例如,考虑以下三个格式字符串: “#,0.”,该字符串使用千位分隔符将数字一亿的格式设置为字符串“100,000,000”。 “#0,.”,该字符串按 1000 的因子进行缩小,将数字一亿的格式设置为字符串“100000”。 “#,0,.”该字符串使用千位分隔符和按 1000 的因子进行缩小,将数字一亿的格式设置为字符串“100,000”。 |
:(冒号字符) |
时间分隔符。在某些区域设置中,可能用其他字符表示时间分隔符。在设置时间值的格式时,时间分隔符用于分隔小时、分钟和秒。在格式化输出中用作时间分隔符的实际字符取决于您的系统设置。 |
/(正斜杠字符) |
日期分隔符。在某些区域设置中,可能用其他字符表示日期分隔符。在设置日期值的格式时,日期分隔符用于分隔年、月和日。在格式化输出中用作日期分隔符的实际字符取决于您的系统设置。 |
E-、E+、e-、e+ |
科学记数法格式。如果格式表达式在 E-、E+、e- 或 e+ 的左侧至少包含一个数字占位符(0 或 #),则以科学记数法格式显示数字,并在数字与其指数之间插入 E 或 e。左侧的数字占位符的个数决定了指数中的数字个数。使用 E- 或 e- 可在负指数的后面放置一个减号。使用 E+ 或 e+ 可在负指数的后面放置一个减号,在正指数的后面放置一个加号。还必须在该符号右侧包括数字占位符以获取正确的格式。 |
-+$() |
文字字符。这些字符将完全按格式字符串中所键入的形式显示。若要显示所列字符以外的其他字符,请在该字符前加上一个反斜杠 (\) 或将该字符放在双引号 (" ") 中。 |
\(反斜杠字符) |
显示格式字符串中的下一个字符。若要将具有特殊含义的字符显示为文字字符,请在该字符前加上一个反斜杠 (\)。反斜杠本身不显示。使用反斜杠与将下一个字符放在双引号中的作用是相同的。若要显示反斜杠,请使用两个反斜杠 (\\)。 不能显示为文字字符的字符示例为日期格式字符和时间格式字符(a、c、d、h、m、n、p、q、s、t、w、y、/ 和 :)、数字格式字符(#、0、%、E、e、逗号和句点)和字符串格式字符(@、&、<、> 和 !)。 |
"ABC" |
显示双引号 (" ") 里面的字符串。若要将字符串包含在代码内的样式参数中,必须将文本放在 Chr (34) 之间(34 为引号 (") 的字符代码)。 |
下表包含用于表示数字的一些示例格式表达式。(所有这些示例均假设您的系统区域设置为“英语 - 美国”)第一列包含 Format 函数的格式字符串;如果格式化的数据具有在列标题中给定的值,则其他列包含生成的输出结果。
格式(样式) |
“5”格式设置为 |
“-5”格式设置为 |
“0.5”格式设置为 |
“0”格式设置为 |
---|---|---|---|---|
零长度字符串 ("") |
5 |
-5 |
0.5 |
0 |
0 |
5 |
-5 |
1 |
0 |
0.00 |
5.00 |
-5.00 |
0.50 |
0.00 |
#,##0 |
5 |
-5 |
1 |
0 |
$#,##0;($#,##0) |
$5 |
($5) |
$1 |
$0 |
$#,##0.00;($#,##0.00) |
$5.00 |
($5.00) |
$0.50 |
$0.00 |
0% |
500% |
-500% |
50% |
0% |
0.00% |
500.00% |
-500.00% |
50.00% |
0.00% |
0.00E+00 |
5.00E+00 |
-5.00E+00 |
5.00E-01 |
0.00E+00 |
0.00E-00 |
5.00E00 |
-5.00E00 |
5.00E-01 |
0.00E00 |
"$#,##0;;\Z\e\r\o" |
$5 |
$-5 |
$1 |
零 |
注释
如果包含两个连续的分号,则缺少的部分用正值的格式显示。
FORMAT 函数的预定义日期和时间格式
下表标识预定义的日期和时间格式的名称。如果您使用这些预定义的字符串之外的字符串,它们将作为自定义日期和时间格式来解释。
格式规范 |
说明 |
---|---|
"General Date" |
显示日期和/或时间。例如 3/12/2008 11:07:31 AM。日期显示由您的应用程序的当前区域性值确定。 |
"Long Date" 或者"Medium Date" |
根据您的当前区域性的长日期格式显示日期。例如,2008 年 3 月 12 日,星期三。 |
"Short Date" |
使用您的当前区域性的短日期格式显示日期。例如 3/12/2008。 |
"Long Time" 或者"Medium Time" |
使用您的当前区域性的长时间格式显示时间;通常包括小时、分钟和秒。例如,11:07:31 AM。 |
"Short Time" |
使用您的当前区域性的短时间格式显示时间。例如,11:07 AM。 |
注释
格式字符串基于 Visual Basic(OLE 自动化)而非 .NET Framework 格式字符串;因此,您的结果可能与 .NET 格式字符串的结果略有不同。请注意,不支持诸如用于长日期的 "D" 和用于短时间的 "t" 的缩写。
FORMAT 函数的自定义日期和时间格式
下表显示可用于创建用户定义的日期/时间格式的字符。
格式规范 |
说明 |
---|---|
(:) |
时间分隔符。在某些区域设置中,可能用其他字符表示时间分隔符。在设置时间值的格式时,时间分隔符用于分隔小时、分钟和秒。在格式化输出中用作时间分隔符的实际字符取决于您应用程序的当前区域性值。 |
(/) |
日期分隔符。在某些区域设置中,可能用其他字符表示日期分隔符。在设置日期值的格式时,日期分隔符用于分隔年、月和日。在格式化输出中用作日期分隔符的实际字符取决于您应用程序的当前区域性。 |
(%) |
用于指示应以单个字母格式读取后面的字符,而不考虑任何尾随字母。此外,还用于指示以用户定义的格式读取单个字母格式。有关其他详细信息,请参阅以下内容。 |
d |
将天显示为不带前导零的数字(例如,1)。如果这是用户定义的数字格式中的唯一字符,则使用 %d。 |
dd |
将天显示为带一个前导零的数字(例如,01)。 |
ddd |
将天显示为缩写(例如,Sun)。 |
dddd |
将天显示为全名(例如,Sunday)。 |
M |
将月显示为不带前导零的数字(例如,一月表示为 1)。如果这是用户定义的数字格式中的唯一字符,则使用 %M。 |
MM |
将月显示为带一个前导零的数字(例如,01/12/01)。 |
MMM |
将月显示为缩写(例如,Jan)。 |
MMMM |
将月显示为完整的月份名称(例如,January)。 |
gg |
显示时期/时代字符串(例如,A.D.)。 |
h |
使用 12 小时制时钟将小时显示为不带前导零的数字(例如,1:15:15 PM)。如果这是用户定义的数字格式中的唯一字符,则使用 %h。 |
hh |
使用 12 小时制时钟将小时显示为带前导零的数字(例如,01:15:15 PM)。 |
H |
使用 24 小时制时钟将小时显示为不带前导零的数字(例如,1:15:15)。如果这是用户定义的数字格式中的唯一字符,则使用 %H。 |
HH |
使用 24 小时制时钟将小时显示为带前导零的数字(例如,01:15:15)。 |
m |
将分钟显示为不带前导零的数字(例如,12:1:15)。如果这是用户定义的数字格式中的唯一字符,则使用 %m。 |
mm |
将分钟显示为带前导零的数字(例如,12:01:15)。 |
s |
将秒显示为不带前导零的数字(例如,12:15:5)。如果这是用户定义的数字格式中的唯一字符,则使用 %s。 |
ss |
将秒显示为带前导零的数字(例如,12:15:05)。 |
f |
显示秒的小数部分。例如,ff 显示百分之一秒,而 ffff 显示万分之一秒。在用户定义的格式中最多可以使用 7 个 f 符号。如果这是用户定义的数字格式中的唯一字符,则使用 %f。 |
t |
使用 12 小时制时钟,对于中午之前的任何小时都显示大写字母 A;对于中午与 11:59 P.M 之间的任何小时都显示大写字母 P。如果这是用户定义的数字格式中的唯一字符,则使用 %t。 |
tt |
对于使用 12 小时制时钟的区域设置,对中午之前的任何小时都显示大写字母 AM;对于中午与 11:59 P.M 之间的任何小时都显示 PM。 对于使用 24 小时制时钟的区域设置,不显示任何内容。 |
y |
将年显示为不带前导零的数字 (0-9)。如果这是用户定义的数字格式中的唯一字符,则使用 %y。 |
yy |
以带一个前导零的两位数字格式显示年(如果适用)。 |
yyy |
以四位数字格式显示年。 |
yyyy |
以四位数字格式显示年。 |
z |
显示不带前导零的时区偏移量(例如,-8)。如果这是用户定义的数字格式中的唯一字符,则使用 %z。 |
zz |
显示带一个前导零的时区偏移量(例如,-08) |
zzz |
显示完整的时区偏移量(例如,-08:00) |
注释
格式设置字符串区分大小写。使用不同的大小写形式,可以获取不同的格式。例如,当使用字符串“D”格式化日期值时,可以获得采用长格式的日期(根据您的当前区域设置)。但是,如果将此字母更改为小写“d”,则可以获得采用短格式的日期。此外,如果目标格式与任何定义的格式字符串的大小写都不匹配,则可能出现意外结果或错误。
日期/时间格式使用当前用户区域设置来确定字符串的最终格式。例如,若要使用下列格式字符串“M/d/yyyy”来设置日期 1995 年 3 月 18 日,如果用户区域设置为美国 (en-us),则结果为“3/18/1995”;但如果用户区域设置为德国 (de-de),则结果为“18.03.1995”。