Cadeias de caracteres de formato numérico padrão

Cadeias de caracteres de formato numérico padrão são usadas para formatar tipos numéricos comuns. Uma cadeia de caracteres de formato numérico padrão assume a forma [format specifier][precision specifier], onde:

  • O especificador de formato é um único caractere alfabético que especifica o tipo de formato de número, por exemplo, moeda ou porcentagem. Qualquer cadeia de caracteres de formato numérico que contenha mais de um caractere alfabético, incluindo espaço em branco, é interpretada como uma cadeia de caracteres de formato numérico personalizada. Para obter mais informações, vá para Cadeias de caracteres de formato numérico personalizadas.

  • O especificador de precisão é um inteiro opcional que afeta o número de dígitos na cadeia de caracteres resultante. O especificador de precisão controla o número de dígitos na representação de cadeia de caracteres de um número.

    Quando o especificador de precisão controla o número de dígitos fracionários na cadeia de resultados, a cadeia de resultados reflete um número que é arredondado para um resultado representável mais próximo do resultado infinitamente preciso.

    Nota

    O especificador de precisão determina o número de dígitos na cadeia de resultados. Para preencher uma cadeia de caracteres de resultado com espaços à esquerda ou à direita ou outros caracteres (como 0), use as funções Text.PadStart e Text.PadEnd e use o comprimento total count nessas funções para preencher a cadeia de caracteres de resultado.

Cadeias de caracteres de formato numérico padrão são suportadas pela função Number.ToText.

Especificadores de formato padrão

A tabela a seguir descreve os especificadores de formato numérico padrão e exibe a saída de amostra produzida por cada especificador de formato. Vá para a seção Notas para obter informações adicionais sobre como usar cadeias de caracteres de formato numérico padrão e a seção Exemplo de código para obter uma ilustração abrangente de seu uso.

Nota

O resultado de uma cadeia de caracteres formatada para uma cultura específica pode diferir dos exemplos a seguir. As configurações do sistema operacional, as configurações do usuário, as variáveis de ambiente e outras configurações no sistema que você usa podem afetar o formato.

Especificador de formato Nome Descrição Exemplos
"C" ou "c" Moeda Resultado: um valor de moeda.

Suportado por: Todos os tipos numéricos.

Especificador de precisão: Número de dígitos decimais.

Especificador de precisão padrão: definido pela cultura.

Para obter mais informações: O especificador de formato de moeda ("C").
123.456 ("C", pt-BR)
-> $123,46

123.456 ("C", fr-FR)
-> 123,46 €

123.456 ("C", ja-JP)
-> ¥123

-123.456 ("C3", pt-BR)
-> (123,456$)

-123.456 ("C3", fr-FR)
-> -123.456 €

-123.456 ("C3", ja-JP)
-> -¥123.456
"D" ou "d" Decimal Resultado: dígitos inteiros com sinal negativo opcional.

Suportado por: Apenas tipos integrais.

Especificador de precisão: Número mínimo de dígitos.

Especificador de precisão padrão: número mínimo de dígitos necessários.

Para obter mais informações: O especificador de formato decimal("D").
1234 ("D")
-> 1234

-1234 ("D6")
-> -001234
"E" ou "e" Exponencial (científico) Resultado: Notação exponencial.

Suportado por: Todos os tipos numéricos.

Especificador de precisão: Número de dígitos decimais.

Especificador de precisão padrão: 6.

Mais informações: O especificador de formato exponencial ("E").
1052.0329112756 ("E", pt-BR)
-> 1.052033E+003

1052.0329112756 ("e", fr-FR)
-> 1.052033e+003

-1052.0329112756 ("e2", pt-BR)
-> -1.05e+003

-1052.0329112756 ("E2", fr-FR)
-> -1,05E+003
"F" ou "f" Ponto fixo Resultado: Dígitos integrais e decimais com sinal negativo opcional.

Suportado por: Todos os tipos numéricos.

Especificador de precisão: Número de dígitos decimais.

Especificador de precisão padrão: definido pela cultura.

Para obter mais informações: O especificador de formato de ponto fixo ("F").
1234.567 ("F", pt-BR)
-> 1234.57

1234.567 ("F", de-DE)
-> 1234,57

1234 ("F1", pt-BR)
-> 1234,0

1234 ("F1", de-DE)
-> 1234,0

-1234.56 ("F4", pt-BR)
-> -1234.5600

-1234,56 ("F4", de-DE)
-> -1234.5600
"G" ou "g" Geral Resultado: O mais compacto de notação de ponto fixo ou científica.

Suportado por: Todos os tipos numéricos.

Especificador de precisão: Número de dígitos significativos.

Especificador de precisão padrão: depende do tipo numérico.

Para obter mais informações: O especificador de formato geral ("G").
-123.456 ("G", pt-BR)
-> -123.456

-123.456 ("G", sv-SE)
-> -123.456

123.4546 ("G4", pt-BR)
-> 123,5

123.4546 ("G4", SV-SE)
-> 123,5

-1.234567890e-25 ("G", pt-BR)
-> -1.23456789E-25

-1.234567890E-25 ("G", sv-SE)
-> -1,23456789E-25
"N" ou "n" Número Resultado: dígitos integrais e decimais, separadores de grupo e um separador decimal com sinal negativo opcional.

Suportado por: Todos os tipos numéricos.

Especificador de precisão: Número desejado de casas decimais.

Especificador de precisão padrão: definido pela cultura.

Para obter mais informações: O especificador de formato numérico ("N").
1234.567 ("N", pt-BR)
-> 1.234,57

1234,567 ("N", ru-RU)
-> 1 234,57

1234 ("N1", pt-BR)
-> 1.234,0

1234 ("N1", ru-RU)
-> 1 234,0

-1234.56 ("N3", pt-BR)
-> -1.234,560

-1234,56 ("N3", ru-RU)
-> -1 234.560
"P" ou "p" Percentagem Resultado: Número multiplicado por 100 e exibido com um símbolo de porcentagem.

Suportado por: Todos os tipos numéricos.

Especificador de precisão: Número desejado de casas decimais.

Especificador de precisão padrão: definido pela cultura.

Para obter mais informações: O especificador de formato de porcentagem ("P").
1 ("P", pt-BR)
-> 100,00 %

1 ("P", fr-FR)
-> 100,00 %

-0.39678 ("P1", pt-BR)
-> -39,7%

-0,39678 ("P1", fr-FR)
-> -39,7 %
"X" ou "x" Hexadecimal Resultado: Uma cadeia de caracteres hexadecimal.

Suportado por: Apenas tipos integrais.

Especificador de precisão: Número de dígitos na cadeia de resultados.

Para obter mais informações: O especificador de formato hexadecimal ("X").
255 ("X")
-> FF

-1 ("x")
-> ff

255 ("x4")
-> 00ff

-1 ("X4")
-> 00FF
Qualquer outro caractere único Especificador desconhecido Resultado: Gera um erro de Expressão em tempo de execução.

Usar cadeias de caracteres de formato numérico padrão

Uma cadeia de caracteres de formato numérico padrão pode ser usada para definir a formatação de um valor numérico. Ele pode ser passado para o parâmetro Number.ToTextformat. O exemplo a seguir formata um valor numérico como uma cadeia de caracteres de moeda na cultura atual (neste caso, a cultura en-US).

Number.ToText(123.456, "C2")
// Displays $123.46

Opcionalmente, você pode fornecer um argumento count nas funções Text.PadStart e Text.PadEnd para especificar a largura do campo numérico e se seu valor está alinhado à direita ou à esquerda. Por exemplo, o exemplo a seguir alinha à esquerda um valor de moeda em um campo de 28 caracteres e alinha à direita um valor de moeda em um campo de 14 caracteres (ao usar uma fonte monoespaçada).

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

As seções a seguir fornecem informações detalhadas sobre cada uma das cadeias de caracteres de formato numérico padrão.

Especificador de formato de moeda (C)

O especificador de formato "C" (ou moeda) converte um número em uma cadeia de caracteres que representa um valor de moeda. O especificador de precisão indica o número desejado de casas decimais na cadeia de resultados. Se o especificador de precisão for omitido, o número padrão de casas decimais a serem usadas em valores de moeda será 2.

Se o valor a ser formatado tiver mais do que o número especificado ou padrão de casas decimais, o valor fracionário será arredondado na cadeia de caracteres de resultado. Se o valor à direita do número de casas decimais especificadas for 5 ou superior, o último dígito na cadeia de resultados será arredondado para longe de zero.

A cadeia de caracteres de resultado é afetada pelas informações de formatação da cultura atual.

O exemplo a seguir formata um valor com o especificador de formato de moeda:

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.

Especificador de formato decimal (D)

O especificador de formato "D" (ou decimal) converte um número em uma cadeia de dígitos decimais (0-9), prefixada por um sinal de menos se o número for negativo. Este formato é suportado apenas para tipos integrais.

O especificador de precisão indica o número mínimo de dígitos desejados na cadeia resultante. Se necessário, o número é acolchoado com zeros à esquerda para produzir o número de dígitos dado pelo especificador de precisão. Se nenhum especificador de precisão for especificado, o padrão será o valor mínimo necessário para representar o inteiro sem zeros à esquerda.

A cadeia de caracteres de resultado é afetada pelas informações de formatação da cultura atual.

O exemplo a seguir formata um valor com o especificador de formato decimal.

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

Especificador de formato exponencial (E)

O especificador de formato exponencial ("E") converte um número numa cadeia da forma "-d.ddd... E+ddd" ou "-d.ddd... e+ddd", onde cada "d" indica um dígito (0-9). A cadeia de caracteres começa com um sinal de menos se o número for negativo. Exatamente um dígito sempre precede a vírgula decimal.

O especificador de precisão indica o número desejado de dígitos após a vírgula decimal. Se o especificador de precisão for omitido, será usado um padrão de seis dígitos após a vírgula decimal.

O caso do especificador de formato indica se o expoente deve prefixar com um "E" ou um "e". O expoente consiste sempre num sinal de mais ou menos e num mínimo de três dígitos. O expoente é acolchoado com zeros para cumprir este mínimo, se necessário.

A cadeia de caracteres de resultado é afetada pelas informações de formatação da cultura atual.

O exemplo a seguir formata um valor com o especificador de formato exponencial:

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

Nota

O valor de texto em branco ("") no último parâmetro de Number.ToText na amostra anterior refere-se à cultura invariante.

Especificador de formato de ponto fixo (F)

O especificador de formato de ponto fixo ("F") converte um número numa cadeia da forma "-ddd.ddd..." onde cada "d" indica um dígito (0-9). A cadeia de caracteres começa com um sinal de menos se o número for negativo.

O especificador de precisão indica o número desejado de casas decimais. Se o especificador de precisão for omitido, o número padrão de casas decimais a serem usadas em valores numéricos será 2.

A cadeia de caracteres de resultado é afetada pelas informações de formatação da cultura atual.

O exemplo a seguir formata um valor duplo e um inteiro com o especificador de formato de ponto fixo:

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

Especificador de formato geral (G)

O especificador de formato geral ("G") converte um número para o mais compacto de ponto fixo ou notação científica, dependendo do tipo do número e se um especificador de precisão está presente. O especificador de precisão define o número máximo de dígitos significativos que podem aparecer na cadeia de resultados. Se o especificador de precisão for omitido ou zero, o tipo do número determinará a precisão padrão, conforme indicado na tabela a seguir.

Tipo numérico Precisão padrão
Byte.Type ou Int8.Type 3 algarismos
Int16.Type 5 dígitos
Int32.Type 10 dígitos
Int64.Type 19 algarismos
Single.Type 9 dígitos
Double.Type 17 dígitos
Decimal.Type 15 dígitos

A notação de ponto fixo é usada se o expoente que resultaria da expressão do número em notação científica for maior que -5 e menor que o especificador de precisão; caso contrário, utiliza-se a notação científica. O resultado contém um ponto decimal, se necessário, e zeros à direita após o ponto decimal são omitidos. Se o especificador de precisão estiver presente e o número de algarismos significativos no resultado exceder a precisão especificada, os algarismos à direita em excesso são removidos por arredondamento.

No entanto, se o número for a Decimal.Type e o especificador de precisão for omitido, a notação de ponto fixo será sempre usada e os zeros à direita serão preservados.

Se for utilizada notação científica, o expoente no resultado é precedido de "E" se o especificador de formato for "G", ou "e" se o especificador de formato for "g". O expoente contém um mínimo de dois dígitos. Isso difere do formato de notação científica que é produzido pelo especificador de formato exponencial, que inclui um mínimo de três dígitos no expoente.

A cadeia de caracteres de resultado é afetada pelas informações de formatação da cultura atual.

O exemplo a seguir formata valores de vírgula flutuante sortidos com o especificador de formato geral:

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

Especificador de formato numérico (N)

O especificador numérico ("N") converte um número numa cadeia do formato "-d,ddd,dd.ddd...", onde "-" indica um símbolo numérico negativo se necessário, "d" indica um dígito (0-9), "," indica um separador de grupo, e "." indica um símbolo de ponto decimal. O especificador de precisão indica o número desejado de dígitos após a vírgula decimal. Se o especificador de precisão for omitido, o número de casas decimais é definido pela cultura atual.

A cadeia de caracteres de resultado é afetada pelas informações de formatação da cultura atual.

O exemplo a seguir formata valores de vírgula flutuante sortidos com o especificador de formato de número:

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

Especificador de formato de porcentagem (P)

O especificador de formato de porcentagem ("P") multiplica um número por 100 e o converte em uma cadeia de caracteres que representa uma porcentagem. O especificador de precisão indica o número desejado de casas decimais. Se o especificador de precisão for omitido, a precisão numérica padrão fornecida pela cultura atual será usada.

O exemplo a seguir formata valores de ponto flutuante com o especificador de formato de porcentagem:

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

Especificador de formato hexadecimal (X)

O especificador de formato hexadecimal ("X") converte um número em uma cadeia de dígitos hexadecimais. O maiúsculo do especificador de formato indica se deve ser usado caracteres maiúsculos ou minúsculos para dígitos hexadecimais maiores que 9. Por exemplo, use "X" para produzir "ABCDEF" e "x" para produzir "abcdef". Este formato é suportado apenas para tipos integrais.

O especificador de precisão indica o número mínimo de dígitos desejados na cadeia resultante. Se necessário, o número é acolchoado com zeros à esquerda para produzir o número de dígitos dado pelo especificador de precisão.

A cadeia de caracteres de resultado não é afetada pelas informações de formatação da cultura atual.

O exemplo a seguir formata valores com o especificador de formato hexadecimal.

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

Notas

Esta seção contém informações adicionais sobre como usar cadeias de caracteres de formato numérico padrão.

Tipos numéricos integrais e de vírgula flutuante

Algumas descrições de especificadores de formato numérico padrão referem-se a tipos numéricos integrais ou de vírgula flutuante. Os tipos numéricos integrais são Byte.Type, , , Int8.TypeInt16.Type, eInt32.TypeInt64.Type. Os tipos numéricos de vírgula flutuante são Decimal.Type, Single.Typee Double.Type.

Infinidades de vírgula flutuante e NaN

Independentemente da cadeia de caracteres de formato, se o valor de um Decimal.Type, Single.Type ou Double.Type tipo de ponto flutuante for infinito positivo, infinito negativo ou não um número (NaN), a cadeia formatada é o valor das respetivas constantes Number.PositiveInfinity, Number.NegativeInfinityou Number.NaN especificadas pela cultura atualmente aplicável.

Exemplo de código

O exemplo a seguir formata um ponto flutuante e um valor numérico integral usando a cultura en-US e todos os especificadores de formato numérico padrão. Este exemplo usa dois tipos numéricos específicos (Double.Type e Int32.Type), mas produziria resultados semelhantes para qualquer um dos outros tipos de base numérica (Byte.Type, Decimal.Type, Int8.Type, Int16.Type, Int64.Type, e 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