Dela via


Numeriska standardformatsträngar

Standardsträngar i numeriskt format används för att formatera vanliga numeriska typer. En numerisk standardformatsträng har formatet [format specifier][precision specifier], där:

  • Formatspecificeraren är ett enda alfabetiskt tecken som anger typ av talformat, till exempel valuta eller procent. Alla numeriska formatsträngar som innehåller mer än ett alfabetiskt tecken, inklusive blanksteg, tolkas som en anpassad numerisk formatsträng. Mer information finns i Anpassade numeriska formatsträngar.

  • Precisionsspecificerare är ett valfritt heltal som påverkar antalet siffror i den resulterande strängen. Precisionsspecificeraren styr antalet siffror i strängrepresentationen av ett tal.

    När precisionsspecificeraren styr antalet bråksiffror i resultatsträngen återspeglar resultatsträngen ett tal som avrundas till ett representerande resultat närmast det oändligt exakta resultatet.

    Kommentar

    Precisionsspecificeraren avgör antalet siffror i resultatsträngen. Om du vill fylla en resultatsträng med inledande eller avslutande blanksteg eller andra tecken (till exempel 0) använder du funktionerna Text.PadStart och Text.PadEnd och använder den övergripande längden count i dessa funktioner för att fylla på resultatsträngen.

Standardsträngar i numeriskt format stöds av funktionen Number.ToText.

Standardformatsspecificerare

I följande tabell beskrivs de numeriska standardformatsspecificerarna och exempelutdata som produceras av varje formatspecificerare. Gå till avsnittet Anteckningar för ytterligare information om hur du använder standardsträngar i numeriskt format och avsnittet Kodexempel för en omfattande bild av deras användning.

Kommentar

Resultatet av en formaterad sträng för en viss kultur kan skilja sig från följande exempel. Operativsysteminställningar, användarinställningar, miljövariabler och andra inställningar i systemet som du använder kan påverka formatet.

Formatspecificerare Name beskrivning Exempel
"C" eller "c" Valuta Resultat: Ett valutavärde.

Stöds av: Alla numeriska typer.

Precisionsspecificerare: Antal decimalsiffror.

Standardprecisionsspecificerare: Definierad av kulturen.

Mer information: Valutaformatsspecificeraren ("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" eller "d" Decimal Resultat: Heltalssiffror med valfritt negativt tecken.

Stöds av: Endast integraltyper.

Precisionsspecificerare: Minsta antal siffror.

Standardprecisionsspecificerare: Minsta antal siffror som krävs.

Mer information: Decimalformatsspecificeraren("D").
1234 ("D")
-> 1234

-1234 ("D6")
-> 001234
"E" eller "e" Exponentiell (vetenskaplig) Resultat: Exponentiell notation.

Stöds av: Alla numeriska typer.

Precisionsspecificerare: Antal decimalsiffror.

Standardprecisionsspecificerare: 6.

Mer information: Exponentiell ("E") formatspecificerare.
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" eller "f" Fast punkt Resultat: Integral- och decimalsiffror med valfritt negativt tecken.

Stöds av: Alla numeriska typer.

Precisionsspecificerare: Antal decimalsiffror.

Standardprecisionsspecificerare: Definierad av kulturen.

Mer information: Formatspecificeraren för fast punkt ("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" eller "g" Allmänt Resultat: Den mer kompakta av antingen fast punkt eller vetenskaplig notation.

Stöds av: Alla numeriska typer.

Precisionsspecificerare: Antal signifikanta siffror.

Standardprecisionsspecificerare: Beror på numerisk typ.

Mer information: Formatspecificeraren allmänt ("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" eller "n" Antal Resultat: Integral- och decimalsiffror, gruppavgränsare och en decimalavgränsare med valfritt negativt tecken.

Stöds av: Alla numeriska typer.

Precisionsspecificerare: Önskat antal decimaler.

Standardprecisionsspecificerare: Definierad av kulturen.

Mer information: Den numeriska ("N") formatspecificeraren.
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" eller "p" Procent Resultat: Tal multiplicerat med 100 och visas med en procentsymbol.

Stöds av: Alla numeriska typer.

Precisionsspecificerare: Önskat antal decimaler.

Standardprecisionsspecificerare: Definierad av kulturen.

Mer information: Procentformatsspecificeraren ("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" eller "x" Hexadecimala Resultat: En hexadecimal sträng.

Stöds av: Endast integraltyper.

Precisionsspecificerare: Antal siffror i resultatsträngen.

Mer information: Hexadecimalt ("X") formatspecificerare.
255 ("X")
-> FF

-1 ("x")
-> ff

255 ("x4")
-> 00ff

-1 ("X4")
-> 00FF
Alla andra enskilda tecken Okänd specificerare Resultat: Utlöser ett uttrycksfel vid körning.

Använda numeriska standardformatsträngar

En numerisk standardformatsträng kan användas för att definiera formateringen av ett numeriskt värde. Den kan skickas till parametern Number.ToTextformat. I följande exempel formateras ett numeriskt värde som en valutasträng i den aktuella kulturen (i det här fallet kulturen en-US).

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

Du kan också ange ett count argument i funktionerna Text.PadStart och Text.PadEnd för att ange bredden på det numeriska fältet och om dess värde är höger- eller vänsterjusterat. Följande exempel vänsterjusterar till exempel ett valutavärde i ett fält med 28 tecken, och det högerjusterar ett valutavärde i ett fält med 14 tecken (när du använder ett teckensnitt med monorymd).

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

Följande avsnitt innehåller detaljerad information om var och en av de numeriska standardformatsträngarna.

Valutaformatsspecificerare (C)

Formatspecificeraren "C" (eller valuta) konverterar ett tal till en sträng som representerar ett valutabelopp. Precisionsspecificeraren anger önskat antal decimaler i resultatsträngen. Om precisionsspecificeraren utelämnas är standardantalet decimaler som ska användas i valutavärden 2.

Om värdet som ska formateras har fler än det angivna eller standardantalet decimaler avrundas bråkvärdet i resultatsträngen. Om värdet till höger om antalet angivna decimaler är 5 eller större avrundas den sista siffran i resultatsträngen bort från noll.

Resultatsträngen påverkas av formateringsinformationen för den aktuella kulturen.

I följande exempel formateras ett värde med valutaformatsspecificeraren:

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.

Decimalformatsspecificerare (D)

Formatspecificeraren "D" (eller decimal) konverterar ett tal till en sträng med decimalsiffror (0–9), prefixet med ett minustecken om talet är negativt. Det här formatet stöds endast för integraltyper.

Precisionsspecificeraren anger det minsta antalet siffror som önskas i den resulterande strängen. Om det behövs, vadderas talet med nollor till vänster för att generera antalet siffror som anges av precisionsspecificeraren. Om ingen precisionsspecificerare anges är standardvärdet det minsta värde som krävs för att representera heltalet utan inledande nollor.

Resultatsträngen påverkas av formateringsinformationen för den aktuella kulturen.

I följande exempel formateras ett värde med decimalformatsspecificeraren.

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 

Exponentiell formatspecificerare (E)

Exponentiellt format ("E") konverterar ett tal till en sträng i formuläret "-d.ddd... E+ddd" eller "-d.ddd... e+ddd", där varje "d" anger en siffra (0–9). Strängen börjar med ett minustecken om talet är negativt. Exakt en siffra föregår alltid decimaltecknet.

Precisionsspecificeraren anger det önskade antalet siffror efter decimaltecknet. Om precisionsspecificeraren utelämnas är standardvärdet sex siffror efter att decimaltecknet har använts.

Fallet med formatspecificeraren anger om exponenten ska prefixas med "E" eller "e". Exponenten består alltid av ett plus- eller minustecken och minst tre siffror. Exponenten är vadderad med nollor för att uppfylla detta minimum, om det behövs.

Resultatsträngen påverkas av formateringsinformationen för den aktuella kulturen.

I följande exempel formateras ett värde med exponentiell formatspecificerare:

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 

Kommentar

Det tomma textvärdet ("") i den sista parametern för Number.ToText i föregående exempel refererar till den invarianta kulturen.

Formatspecificerare med fast punkt (F)

Formatspecificeraren för fast punkt ("F") konverterar ett tal till en sträng i formuläret "-ddd.ddd..." där varje "d" anger en siffra (0–9). Strängen börjar med ett minustecken om talet är negativt.

Precisionsspecificeraren anger önskat antal decimaler. Om precisionsspecificeraren utelämnas är standardantalet decimaler som ska användas i numeriska värden 2.

Resultatsträngen påverkas av formateringsinformationen för den aktuella kulturen.

I följande exempel formateras ett dubbel- och heltalsvärde med fast punktformatsspecificeraren:

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

Allmän formatspecificerare (G)

Det allmänna formatet ("G") konverterar ett tal till den mer kompakta av antingen fast punkt eller vetenskaplig notation, beroende på typen av tal och om en precisionsspecificerare finns. Precisionsspecificeraren definierar det maximala antalet signifikanta siffror som kan visas i resultatsträngen. Om precisionsspecificeraren utelämnas eller noll, avgör typen av talet standardprecisionen, som anges i följande tabell.

Numerisk typ Standardprecision
Byte.Type eller Int8.Type 3 siffror
Int16.Type 5 siffror
Int32.Type 10 siffror
Int64.Type 19 siffror
Single.Type 9 siffror
Double.Type 17 siffror
Decimal.Type 15 siffror

Notation med fast punkt används om exponenten som skulle bli resultatet av att uttrycka talet i vetenskaplig notation är större än -5 och mindre än precisionsspecificeraren. annars används vetenskaplig notation. Resultatet innehåller en decimalpunkt om det behövs och avslutande nollor efter att decimaltecknet utelämnats. Om precisionsspecificeraren finns och antalet signifikanta siffror i resultatet överskrider den angivna precisionen tas de avslutande siffrorna bort genom avrundning.

Men om talet är en Decimal.Type och precisionsspecificeraren utelämnas används alltid notation med fast punkt och avslutande nollor bevaras.

Om vetenskaplig notation används prefixet exponenten i resultatet med "E" om formatspecificeraren är "G" eller "e" om formatspecificeraren är "g". Exponenten innehåller minst två siffror. Detta skiljer sig från formatet för vetenskaplig notation som produceras av exponentformatsspecificeraren, som innehåller minst tre siffror i exponenten.

Resultatsträngen påverkas av formateringsinformationen för den aktuella kulturen.

I följande exempel formateras olika flyttalsvärden med den allmänna formatspecificeraren:

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

Numerisk formatspecificerare (N)

Det numeriska formatet ("N") konverterar ett tal till en sträng i formuläret "-d,ddd,ddd.ddd...", där "-" anger en negativ talsymbol om det behövs, "d" anger en siffra (0-9), "," anger en gruppavgränsare och "." anger en decimalpunktssymbol. Precisionsspecificeraren anger det önskade antalet siffror efter decimaltecknet. Om precisionsspecificeraren utelämnas definieras antalet decimaler av den aktuella kulturen.

Resultatsträngen påverkas av formateringsinformationen för den aktuella kulturen.

I följande exempel formateras olika flyttalsvärden med talformatsspecificeraren:

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

Procentformatsspecificerare (P)

Formatspecificeraren percent ("P") multiplicerar ett tal med 100 och konverterar det till en sträng som representerar en procentandel. Precisionsspecificeraren anger önskat antal decimaler. Om precisionsspecificeraren utelämnas används den numeriska standardprecision som tillhandahålls av den aktuella kulturen.

I följande exempel formateras flyttalsvärden med procentformatsspecificeraren:

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

Hexadecimal formatspecificerare (X)

Formatspecificeraren hexadecimalt ("X") konverterar ett tal till en sträng med hexadecimala siffror. Fallet med formatspecificeraren anger om versaler eller gemener ska användas för hexadecimala siffror som är större än 9. Använd till exempel "X" för att producera "ABCDEF" och "x" för att producera "abcdef". Det här formatet stöds endast för integraltyper.

Precisionsspecificeraren anger det minsta antalet siffror som önskas i den resulterande strängen. Om det behövs, vadderas talet med nollor till vänster för att generera antalet siffror som anges av precisionsspecificeraren.

Resultatsträngen påverkas inte av formateringsinformationen för den aktuella kulturen.

I följande exempel formateras värden med hexadecimal formatspecificeraren.

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

Kommentar

Det här avsnittet innehåller ytterligare information om hur du använder numeriska standardformatsträngar.

Numeriska typer av integraler och flyttalser

Vissa beskrivningar av numeriska standardformatsspecificerare refererar till numeriska typer av integraler eller flyttalstyper. De integrerade numeriska typerna är Byte.Type, Int8.Type, Int16.Type, Int32.TypeochInt64.Type. De numeriska flyttalstyperna är Decimal.Type, Single.Typeoch Double.Type.

Flyttalsinfiniteter och NaN

Oavsett formatsträngen, om värdet för en Decimal.Type, Single.Type eller Double.Type flyttalstyp är positiv oändlighet, negativ oändlighet eller inte ett tal (NaN), är den formaterade strängen värdet för respektive Number.PositiveInfinity, Number.NegativeInfinityeller Number.NaN konstanter som anges av den aktuella kulturen.

Kodexempel

I följande exempel formateras en flyttal och ett helt numeriskt värde med hjälp av en-US-kulturen och alla numeriska standardformatsspecificerare. Det här exemplet använder två specifika numeriska typer (Double.Type och Int32.Type), men skulle ge liknande resultat för någon av de andra numeriska bastyperna (Byte.Type, , Decimal.TypeInt8.Type, Int16.Type, Int64.Typeoch 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