Brugerdefinerede numeriske formatstrenge
Du kan oprette en brugerdefineret streng til numerisk format, som består af en eller flere brugerdefinerede numeriske angivelser, for at definere, hvordan numeriske data skal formateres. En brugerdefineret streng til numerisk format er en hvilken som helst formatstreng, der ikke er en standardstreng til numerisk format.
I følgende tabel beskrives de brugerdefinerede numeriske formatangivelser og viser eksempeloutput, der er produceret af hver formatangivelse. Gå til afsnittet Noter for at få flere oplysninger om brug af brugerdefinerede numeriske formatstrenge og afsnittet Eksempel for at få en omfattende illustration af brugen af dem.
Formatangivelse | Navn | Beskrivelse | Eksempler |
---|---|---|---|
"0" | Pladsholder med nul | Erstatter nul med det tilsvarende ciffer, hvis der findes et. Ellers vises der nul i resultatstrengen. Flere oplysninger: Den brugerdefinerede specifikation "0". |
1234.5678 ("00000") -> 01235 0.45678 ("0.00", en-US) -> 0,46 0,45678 ("0,00", fr-FR) -> 0,46 |
"#" | Pladsholder for ciffer | Erstatter symbolet "#" med det tilsvarende ciffer, hvis der findes et. Ellers vises der intet ciffer i resultatstrengen. Der vises intet ciffer i resultatstrengen, hvis det tilsvarende ciffer i inputstrengen er et ikke-ubetydeligt 0. For eksempel 0003 ("####") -> 3. Flere oplysninger: Den brugerdefinerede "#"-specifikation. |
1234.5678 ("#####") -> 1235 0,45678 ("#.##", en-US) -> .46 0,45678 ("#.##", fr-FR) -> ,46 |
"." | Decimaltegnet | Bestemmer placeringen af decimalseparatoren i resultatstrengen. Flere oplysninger: "" Brugerdefineret specifikation. |
0.45678 ("0.00", en-US) -> 0,46 0,45678 ("0,00", fr-FR) -> 0,46 |
"," | Gruppeseparator og talskalering | Fungerer både som en gruppeseparator og en talskaleringsangivelse. Som gruppeseparator indsætter den et lokaliseret gruppeseparatortegn mellem hver gruppe. Som en talskaleringsangivelse dividerer den et tal med 1000 for hvert komma, der er angivet. Flere oplysninger: Den brugerdefinerede specifikation ",". |
Separatorangivelse for gruppe: 2147483647 ("##,#", en-US) -> 2.147.483.647 2147483647 ("##,#", es-ES) -> 2.147.483.647 Skaleringsangivelse: 2147483647 ("#,#,", en-US) -> 2.147 2147483647 ("#,#,", es-ES) -> 2,147 |
"%" | Pladsholder for procentdel | Multiplicerer et tal med 100 og indsætter et lokaliseret procentsymbol i resultatstrengen. Flere oplysninger: Den brugerdefinerede angivelse "%". |
0,3697 ("%#0.00", en-US) -> %36.97 0,3697 ("%#0.00", el-GR) -> %36,97 0,3697 ("##.0 %", en-US) -> 37,0 % 0,3697 ("##.0 %", el-GR) -> 37,0 % |
"‰" | Pladsholder for pr. mille | Multiplicerer et tal med 1000 og indsætter et lokaliseret symbol pr. mille i resultatstrengen. Flere oplysninger: Den brugerdefinerede specifikation "‰". |
0.03697 ("#0.00‰", en-US) -> 36,97‰ 0.03697 ("#0.00‰", ru-RU) -> 36,97‰ |
"E0" "E+0" "E-0" "e0" "e+0" "e-0" |
Eksponentiel notation | Hvis det efterfølges af mindst én 0 (nul), formateres resultatet ved hjælp af eksponentiel notation. Hvis der er tale om "E" eller "e", betyder det, at der er forskel på eksponentsymbolet i resultatstrengen. Antallet af nuller efter tegnet "E" eller "e" bestemmer det mindste antal cifre i eksponenten. Et plustegn (+) angiver, at et tegn altid står foran eksponenten. Et minustegn (-) angiver, at et tegn foran kun er negative eksponenter. Flere oplysninger: Brugerdefinerede specifikationer for "E" og "e". |
987654 ("#0.0e0") -> 98,8e4 1503.92311 ("0.0##e+00") -> 1,504e+03 1.8901385E-16 ("0.0e+00") -> 1,9e-16 |
"\", "''", """" | Escape-tegn | Medfører, at det eller de næste tegn fortolkes som en konstant i stedet for som en brugerdefineret formatangivelse. Flere oplysninger: Escape-tegn. |
987654 ("\###00\#") -> #987654# 987654 ("'#'##00'#'") -> #987654# 987654 ("""#"#"#00""#""") -> #987654# |
'streng' "streng" |
Konstantstrengafgrænser | Angiver, at de omsluttede tegn skal kopieres til resultatstrengen uændret. Flere oplysninger: Tegnkonstanter. |
68 ("# 'grader'") -> 68 grader 68 ("#' grader'") -> 68 grader |
; | Sektionsseparator | Definerer sektioner med separate formatstrenge for positive, negative og nul tal. Flere oplysninger: ";" Sektionsseparator. |
12.345 ("#0.0#;( #0.0#);-\0-") -> 12,35 0 ("#0.0#;( #0.0#);-\0-") -> -0- -12.345 ("#0.0#;( #0.0#);-\0-") -> (12,35) 12.345 ("#0.0#;( #0.0#)") -> 12.35 0 ("#0.0#;( #0.0#)") -> 0,0 -12.345 ("#0.0#;( #0.0#)") -> (12.35) |
Andet | Alle andre tegn | Tegnet kopieres til resultatstrengen uændret. Flere oplysninger: Tegnkonstanter. |
68 ("# °") -> 68 ° |
Følgende afsnit indeholder detaljerede oplysninger om hver af de brugerdefinerede numeriske formatangivelser.
Den brugerdefinerede specifikation "0"
Den brugerdefinerede formatangivelse "0" fungerer som et symbol med nulpladsholder. Hvis den værdi, der formateres, har et ciffer på den placering, hvor nul vises i formatstrengen, kopieres dette ciffer til resultatstrengen. Ellers vises der et nul i resultatstrengen. Placeringen af nul længst til venstre før decimaltegnet og det yderste højre nul efter decimaltegnet bestemmer det interval af cifre, der altid findes i resultatstrengen.
Angivelsen "00" medfører, at værdien afrundes til det nærmeste ciffer før decimaltegnet, hvor afrunding væk fra nul altid bruges. Formatering af 34,5 med "00" vil f.eks. resultere i værdien 35.
I følgende eksempel vises flere værdier, der er formateret ved hjælp af brugerdefinerede formatstrenge, der indeholder nul pladsholdere.
let
Source =
{
Number.ToText(123, "00000", ""),
// Displays 00123
Number.ToText(1.2, "0.00", ""),
// Displays 1.20
Number.ToText(1.2, "00.00", ""),
// Displays 01.20
Number.ToText(1.2, "00.00", "da-DK"),
// Displays 01,20
Number.ToText(.56, "0.0", ""),
// Displays 0.6
Number.ToText(1234567890, "0,0", ""),
// Displays 1,234,567,890
Number.ToText(1234567890, "0,0", "el-GR"),
// Displays 1.234.567.890
Number.ToText(1234567890.123456, "0,0.0", ""),
// Displays 1,234,567,890.1
Number.ToText(1234.567890, "0,0.00", "")
// Displays 1,234.57
}
in
Source
Bemærk
Den tomme tekstværdi ("") i den sidste parameter for Number.ToText i det forrige eksempel henviser til den invariante kultur.
Den brugerdefinerede "#"-specifikation
Den brugerdefinerede formatangivelse "#" fungerer som et cifferpladsholdersymbol. Hvis den værdi, der formateres, har et ciffer på den placering, hvor symbolet "#" vises i formatstrengen, kopieres dette ciffer til resultatstrengen. Ellers gemmes intet på denne placering i resultatstrengen.
Bemærk, at denne angivelse aldrig viser et nul, der ikke er et væsentligt ciffer, selvom nul er det eneste ciffer i strengen. Det viser kun nul, hvis det er et betydeligt ciffer i det tal, der vises.
Formatstrengen "##" medfører, at værdien afrundes til det nærmeste ciffer før decimaltegnet, hvor afrunding væk fra nul altid bruges. Formatering af 34.5 med "##" vil f.eks. resultere i værdien 35.
I følgende eksempel vises flere værdier, der er formateret ved hjælp af brugerdefinerede formatstrenge, der indeholder cifferpladsholdere.
let
Source =
{
Number.ToText(1.2, "#.##", ""),
// Displays 1.2
Number.ToText(123, "#####"),
// Displays 123
Number.ToText(123456, "[##-##-##]"),
// Displays [12-34-56]
Number.ToText(1234567890, "#"),
// Displays 1234567890
Number.ToText(1234567890, "(###) ###-####")
// Displays (123) 456-7890
}
in
Source
Hvis du vil returnere en resultatstreng, hvor fraværende cifre eller foranstillede nuller erstattes af mellemrum, skal du bruge Text.PadStart og angive en feltbredde, som vist i følgende eksempel.
let
Source = Text.Format("The value is: '#{0}'", {Text.PadStart(Number.ToText(.324, "#.###"), 5)})
in
Source
// The example displays the following output if the current culture
// is en-US:
// The value is: ' .324'
Den brugerdefinerede specifikation "."
Den brugerdefinerede formatangivelse "." indsætter en lokaliseret decimalseparator i resultatstrengen. Det første punktum i formatstrengen bestemmer placeringen af decimalseparatoren i den formaterede værdi. yderligere perioder ignoreres. Hvis formatangivelsen slutter med ".", er det kun de betydende cifre, der formateres i resultatstrengen.
Det tegn, der bruges som decimalseparator i resultatstrengen, er ikke altid et punktum. det bestemmes af den kultur, der styrer formateringen.
I følgende eksempel bruges formatangivelsen "." til at definere placeringen af decimaltegnet i flere resultatstrenge.
let
Source =
{
Number.ToText(1.2, "0.00", ""),
// Displays 1.20
Number.ToText(1.2, "00.00", ""),
// Displays 01.20
Number.ToText(1.2, "00.00", "da-DK"),
// Displays 01,20
Number.ToText(.086, "#0.##%", ""),
// Displays 8.6%
Number.ToText(Double.From(86000), "0.###E+0", "")
// Displays 8.6E+4
}
in
Source
Den brugerdefinerede specifikation ","
Tegnet "," fungerer både som en gruppeseparator og en talskaleringsangivelse.
Gruppeseparator: Hvis der er angivet et eller flere kommaer mellem to cifferpladsholdere (0 eller #), der formaterer et tals integralcifre, indsættes der et gruppeseparatortegn mellem hver talgruppe i den integrerede del af outputtet.
Kulturen bestemmer det tegn, der bruges som talgruppeseparator og størrelsen på hver talgruppe. Hvis strengen "#,#" og den invariante kultur f.eks. bruges til at formatere tallet 1000, er outputtet "1.000".
Talskaleringsangivelse: Hvis et eller flere kommaer angives umiddelbart til venstre for det eksplicitte eller implicitte decimaltegn, divideres det tal, der skal formateres, med 1000 for hvert komma. Hvis strengen "0," f.eks. bruges til at formatere tallet 100 millioner, er outputtet "100".
Du kan bruge gruppeseparator- og talskaleringsangivelser i den samme formatstreng. Hvis strengen "#,0," og den invariante kultur f.eks. bruges til at formatere tallet en milliard, er outputtet "1.000".
I følgende eksempel illustreres brugen af kommaet som gruppeseparator.
let
Source =
{
Number.ToText(1234567890, "#,#", ""),
// Displays 1,234,567,890
Number.ToText(1234567890, "#,##0,,", "")
// Displays, 1,235
}
in
Source
I følgende eksempel illustreres brugen af kommaet som en specifikation til nummerskalering.
let
Source =
{
Number.ToText(1234567890, "#,,", ""),
// Displays 1235
Number.ToText(1234567890, "#,,,", ""),
// Displays 1
Number.ToText(1234567890, "#,##0,,", "")
// Displays 1,235
}
in
Source
Den brugerdefinerede specifikation "%"
Et procenttegn (%) i en formatstreng medfører, at et tal ganges med 100, før det formateres. Det lokaliserede procentsymbol indsættes i tallet på det sted, hvor % vises i formatstrengen. Det procenttegn, der bruges, er defineret af kulturen.
I følgende eksempel defineres en brugerdefineret formatstreng, der indeholder den brugerdefinerede angivelse "%".
let
Source = Number.ToText(.086, "#0.##%", "")
// Displays 8.6%
in
Source
Den brugerdefinerede "‰"-specifikation
Et pr. milletegn (‰ eller \u2030) i en formatstreng medfører, at et tal ganges med 1000, før det formateres. Det relevante symbol pr. mille indsættes i den returnerede streng på det sted, hvor ‰-symbolet vises i formatstrengen. Det anvendte tegn pr. mille defineres af kulturen, som indeholder kulturspecifikke formateringsoplysninger.
I følgende eksempel defineres en brugerdefineret formatstreng, der indeholder den brugerdefinerede angivelse "‰".
let
Source = Number.ToText(.00354, "#0.##" & Character.FromNumber(0x2030), "")
// Displays 3.54‰
in
Source
De brugerdefinerede specifikationer "E" og "e"
Hvis nogen af strengene "E", "E+", "E-", "e", "e+" eller "e-" findes i formatstrengen og umiddelbart efterfølges af mindst ét nul, formateres tallet ved hjælp af videnskabelig notation med et "E" eller "e", der er indsat mellem tallet og eksponenten. Antallet af nuller efter indikatoren for videnskabelig notation bestemmer det mindste antal cifre, der skal udskrives for eksponenten. Formaterne "E+" og "e+" angiver, at et plus- eller minustegn altid skal stå foran eksponenten. Formaterne "E", "E", "e" eller "e-" angiver, at et tegn kun skal stå foran negative eksponenter.
I følgende eksempel formateres flere numeriske værdier ved hjælp af angivelserne til videnskabelig notation.
let
Source =
{
Number.ToText(86000, "0.###E+0", ""),
// Displays 8.6E+4
Number.ToText(86000, "0.###E+000", ""),
// Displays 8.6E+004
Number.ToText(86000, "0.###E-000", "")
// Displays 8.6E004
}
in
Source
Escape-tegn
Symbolerne "#", "0", ".", ",", "%" og "‰" i en formatstreng fortolkes som formatangivelser i stedet for som konstanttegn. Afhængigt af deres placering i en brugerdefineret formatstreng kan symbolerne "E" med store og små bogstaver samt symbolerne + og - også fortolkes som formatangivelser.
Hvis du vil forhindre, at et tegn fortolkes som en formatangivelse, kan du:
- Før den med en omvendt skråstreg.
- Omgiv det med et enkelt citat.
- Omgiv den med to dobbelte anførselstegn.
Hvert af disse tegn fungerer som escape-tegn. Escape-tegnet angiver, at følgende tegn er en tegnkonstant, der skal medtages i resultatstrengen uændret.
Hvis du vil medtage en omvendt skråstreg i en resultatstreng, skal du slippe den med en anden omvendt skråstreg (\\
).
Hvis du vil medtage et enkelt anførselstegn i en resultatstreng, skal du slippe det med en omvendt skråstreg (\'
). Hvis et andet enkelt anførselstegn, der ikke er undsluppet før det undslap enkelte anførselstegn, vises omvendt skråstreg i stedet ('\'
vises \
).
Hvis du vil medtage et dobbelt anførselstegn i en resultatstreng, skal du undgå to af dem med en omvendt skråstreg (\""
).
I følgende eksempel bruges escape-tegn til at forhindre formateringshandlingen i at fortolke tegnene "#", "0" og "" som enten escape-tegn eller formatangivelser.
let
Source =
{
Number.ToText(123, "\#\#\# ##0 dollars and \0\0 cents \#\#\#"),
// Displays ### 123 dollars and 00 cents ###
Number.ToText(123, "'###' ##0 dollars and '00' cents '###'"),
// Displays ### 123 dollars and 00 cents ###
Number.ToText(123, """###"" ##0 dollars and ""00"" cents ""###"""),
// Displays ### 123 dollars and 00 cents ###
Number.ToText(123, "\\\\\\ ##0 dollars and \0\0 cents \\\\\\"),
// Displays \\\ 123 dollars and 00 cents \\\
Number.ToText(123, "'\\\' ##0 dollars and '00' cents '\\\'"),
// Displays \\\ 123 dollars and 00 cents \\\
Number.ToText(123, """\\\"" ##0 dollars and ""00"" cents ""\\\""")
// Displays \\\ 123 dollars and 00 cents \\\
}
in
Source
Sektionsseparatoren ";"
Semikolonet (;) er en betinget formatangivelse, der anvender forskellig formatering på et tal, afhængigt af om værdien er positiv, negativ eller nul. For at skabe denne funktionsmåde kan en brugerdefineret formatstreng indeholde op til tre sektioner adskilt af semikolon. Disse afsnit er beskrevet i følgende tabel.
Antal sektioner | Beskrivelse |
---|---|
Én sektion | Formatstrengen gælder for alle værdier. |
To sektioner | Den første sektion gælder for positive værdier og nuller, og den anden sektion gælder for negative værdier. Hvis det tal, der skal formateres, er negativt, men bliver nul efter afrunding i henhold til formatet i den anden sektion, formateres det resulterende nul i henhold til den første sektion. |
Tre sektioner | Den første sektion gælder for positive værdier, den anden sektion gælder for negative værdier, og den tredje sektion gælder for nuller. Den anden sektion kan være tom (ved ikke at have noget mellem semikolonerne), og i så fald gælder den første sektion for alle værdier, der ikke er nul. Hvis det tal, der skal formateres, er ikke nul, men bliver nul efter afrunding i henhold til formatet i første eller anden sektion, formateres det resulterende nul i henhold til den tredje sektion. |
Sektionsseparatorer ignorerer al eksisterende formatering, der er knyttet til et tal, når den endelige værdi formateres. Negative værdier vises f.eks. altid uden et minustegn, når der bruges sektionsseparatorer. Hvis den endelige formaterede værdi skal have et minustegn, skal du eksplicit inkludere minustegnet som en del af den brugerdefinerede formatangivelse.
I følgende eksempel bruges formatet ";" til at formatere positive, negative og nul tal forskelligt.
let
Source =
{
Number.ToText(1234, "##;(##)"),
// Displays 1234
Number.ToText(-1234, "##;(##)"),
// Displays (1234)
Number.ToText(0, "##;(##);**Zero**")
// Displays **Zero**
}
in
Source
Tegnkonstanter
Formatangivelser, der vises i en brugerdefineret streng til numerisk format, fortolkes altid som formateringstegn og aldrig som konstanttegn. Dette omfatter følgende tegn:
Alle andre tegn fortolkes altid som tegnkonstanter og medtages i resultatstrengen uændret i en formateringshandling. I en fortolkningshandling skal de matche tegnene i inputstrengen nøjagtigt. der er forskel på store og små bogstaver i sammenligningen.
I følgende eksempel illustreres én almindelig brug af konstanttegnenheder (i dette tilfælde tusinder):
let
Source = Number.ToText(123.8, "#,##0.0K")
// Displays 123.8K
in
Source
Der er to måder at angive, at tegn skal fortolkes som konstanttegn og ikke som formateringstegn, så de kan medtages i en resultatstreng eller fortolkes korrekt i en inputstreng:
Ved at undslippe et formateringstegn. Du kan få flere oplysninger ved at gå til Escape-tegn.
Ved at omslutte hele konstantstrengen i citat apostroffer.
I følgende eksempel bruges begge metoder til at inkludere reserverede tegn i en brugerdefineret streng til numerisk format.
let
Source =
{
Number.ToText(9.3, "##.0\%"),
// Displays 9.3%
Number.ToText(9.3, "\'##\'"),
// Displays '9'
Number.ToText(9.3, "\\##\\"),
// Displays \9\
Number.ToText(9.3, "##.0'%'"),
// Displays 9.3%
Number.ToText(9.3, "'\'##'\'"),
// Displays \9\
Number.ToText(9.3, "##.0""%"""),
// Displays 9.3%
Number.ToText(9.3, "\""##\""")
// Displays "9"
}
in
Source
Bemærkninger
Flydende tal uendeligheder og NaN
Hvis værdien af en Decimal.Type
, Single.Type
eller Double.Type
flydende taltype er positiv uendelighed, negativ uendelighed eller ikke et tal (NaN), er den formaterede streng værdien af de respektive Number.PositiveInfinity, Number.NegativeInfinityeller Number.NaN konstanter, der er angivet af den aktuelt gældende kultur, uanset formatstrengen.
Afrundings- og fastpunktsformatstrenge
For strenge med fast punktformat (dvs. formatstrenge, der ikke indeholder videnskabelige notationformattegn), afrundes tal til lige så mange decimaler, som der er cifferpladsholdere til højre for decimaltegnet. Hvis formatstrengen ikke indeholder et decimaltegn, afrundes tallet til det nærmeste heltal. Hvis tallet har flere cifre, end der er cifferpladsholdere til venstre for decimaltegnet, kopieres de ekstra cifre til resultatstrengen umiddelbart før pladsholderen for det første ciffer.
Eksempel
I følgende eksempel vises to brugerdefinerede strenge til numerisk format. I begge tilfælde viser cifferpladsholderen (#
) de numeriske data, og alle andre tegn kopieres til resultatstrengen.
let
Source =
{
Number.ToText(1234567890, "(###) ###-####"),
// Displays (123) 456-7890
Number.ToText(42, "My Number = #")
// Displays My number = 42
}
in
Source