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.Type
ochInt64.Type
. De numeriska flyttalstyperna är Decimal.Type
, Single.Type
och 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.Type
Int8.Type
, Int16.Type
, Int64.Type
och 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