Egendefinerte tallformatstrenger
Du kan opprette en egendefinert numerisk formatstreng, som består av én eller flere egendefinerte numeriske an angire, for å definere hvordan du formaterer numeriske data. En egendefinert numerisk formatstreng er en hvilken som helst formatstreng som ikke er en standard numerisk formatstreng.
Tabellen nedenfor beskriver det egendefinerte tallformatantallet og viser eksempelutdata produsert av hver formatangitter. Gå til Notater-delen for mer informasjon om hvordan du bruker egendefinerte numeriske formatstrenger, og eksempelinndelingen for en omfattende illustrasjon av bruken.
Formatantall | Name | Bekrivelse | Eksempler |
---|---|---|---|
"0" | Null plassholder | Erstatter nullen med det tilsvarende sifferet hvis ett er til stede. Ellers vises null i resultatstrengen. Mer informasjon: Den egendefinerte anangiren 0. |
1234.5678 ("00000") -> 01235 0.45678 ("0,00", en-US) -> 0,46 0,45678 ("0,00", fr-FR) -> 0,46 |
"#" | Plassholder for siffer | Erstatter «#»-symbolet med det tilsvarende sifferet hvis det finnes et. Ellers vises ingen sifre i resultatstrengen. Ingen sifre vises i resultatstrengen hvis det tilsvarende sifferet i inndatastrengen er en ikke-ubetydelig 0. For eksempel 0003 ("#####") -> 3. Mer informasjon: Den egendefinerte anangiren #. |
1234.5678 ("#####") -> 1235 0.45678 ("#.###", en-US) -> .46 0.45678 ("#.##", fr-FR) -> ,46 |
"." | Desimaltegn | Bestemmer plasseringen av desimalskilletegnet i resultatstrengen. Mer informasjon: «». Egendefinert anseer. |
0.45678 ("0,00", en-US) -> 0,46 0,45678 ("0,00", fr-FR) -> 0,46 |
"," | Gruppeskilletegn og tallskalering | Fungerer som både et gruppeskilletegn og en tallskaleringsantall. Som et gruppeskilletegn setter den inn et lokalisert gruppeskilletegn mellom hver gruppe. Som en tallskaleringsangitt deler den et tall med 1000 for hvert komma som er angitt. Mer informasjon: Den egendefinerte antallsantallet. |
Gruppeskilletegnantall: 2147483647 ("##,#", en-US) -> 2.147.483.647 2147483647 ("##,#", es-ES) -> 2.147.483.647 Skaleringsantall: 2147483647 ("#,#,,", en-US) -> 2147 2147483647 ("#,#,,", es-ES) -> 2,147 |
"%" | Prosentplassholder | Multipliserer et tall med 100 og setter inn et lokalisert prosentsymbol i resultatstrengen. Mer informasjon: Den egendefinerte spesifisereren %. |
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 % |
"‰" | Plassholder for per mølle | Multipliserer et tall med 1000 og setter inn et lokalisert symbol per mølle i resultatstrengen. Mer informasjon: Den egendefinerte anangiren «‰». |
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" |
Eksponentiell notasjon | Hvis etterfulgt av minst én 0 (null), formaterer du resultatet ved hjelp av eksponentiell notasjon. Bokstaven «E» eller «e» angir tilfellet med eksponentsymbolet i resultatstrengen. Antall nuller etter tegnet E eller e bestemmer minimum antall sifre i eksponenten. Et plusstegn (+) angir at et tegn alltid kommer foran eksponenten. Et minustegn (-) angir at et tegn bare kommer foran negative eksponenter. Mer informasjon: De egendefinerte anførerne 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 | Fører til at neste tegn eller tegn tolkes som en litteral i stedet for som en egendefinert formatangitter. Mer informasjon: Escape-tegn. |
987654 ("\###00\#") -> #987654# 987654 ("'#'#00'#'#'") -> #987654# 987654 ("""#""##00"""#"""") -> #987654# |
«streng» "streng" |
Litteral strengskilletegn | Angir at de omsluttede tegnene skal kopieres til resultatstrengen uendret. Mer informasjon: Tegnlitteraler. |
68 ("# 'grader'") -> 68 grader 68 ("#' grader") -> 68 grader |
; | Inndelingsskilletegn | Definerer inndelinger med separate formatstrenger for positive, negative tall og nulltall. Mer informasjon: ";" Inndelingsskilletegn. |
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) |
Annet | Alle andre tegn | Tegnet kopieres til resultatstrengen uendret. Mer informasjon: Tegnlitteraler. |
68 ("# °") -> 68 ° |
Avsnittene nedenfor gir detaljert informasjon om hver av de egendefinerte tallformatangitte.
Den egendefinerte anangiren "0"
Det egendefinerte formatantallet "0" fungerer som et nullplassholdersymbol. Hvis verdien som formateres, har et siffer i posisjonen der nullen vises i formatstrengen, kopieres dette sifferet til resultatstrengen. Ellers vises en null i resultatstrengen. Plasseringen av null lengst til venstre før desimaltegnet og null lengst til høyre etter desimaltegnet bestemmer området med sifre som alltid finnes i resultatstrengen.
Angiren 00 fører til at verdien avrundes til nærmeste siffer foran desimaltegnet, der avrunding bort fra null alltid brukes. Formatering 34,5 med 00 vil for eksempel resultere i verdien 35.
Følgende eksempel viser flere verdier som er formatert ved hjelp av egendefinerte formatstrenger som inneholder null plassholdere.
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
Merk
Den tomme tekstverdien ("") i den siste parameteren for Number.ToText i det forrige eksemplet refererer til den invariante kulturen.
Den egendefinerte anangiren #
Den egendefinerte formatantallet #fungerer som et symbol for sifferplassholder. Hvis verdien som formateres, har et siffer i posisjonen der «#»-symbolet vises i formatstrengen, kopieres dette sifferet til resultatstrengen. Ellers lagres ingenting i den posisjonen i resultatstrengen.
Vær oppmerksom på at denne anvisningen aldri viser en null som ikke er et signifikant siffer, selv om null er det eneste sifferet i strengen. Den viser null bare hvis det er et signifikant siffer i tallet som vises.
Formatstrengen "##" fører til at verdien avrundes til nærmeste siffer foran desimaltegnet, der avrunding bort fra null alltid brukes. Formatering av 34,5 med «##» vil for eksempel resultere i verdien 35.
Følgende eksempel viser flere verdier som er formatert ved hjelp av egendefinerte formatstrenger som inneholder sifferplassholdere.
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 der fraværende sifre eller innledende nuller erstattes av mellomrom, bruker du Text.PadStart og angir en feltbredde, som eksemplet nedenfor illustrerer.
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 egendefinerte anangiren "."
Den egendefinerte formatantallet setter inn et lokalisert desimalskilletegn i resultatstrengen. Den første perioden i formatstrengen bestemmer plasseringen av desimalskilletegnet i den formaterte verdien. eventuelle ekstra perioder ignoreres. Hvis formatantallet slutter med en «». Bare de signifikante sifrene er formatert i resultatstrengen.
Tegnet som brukes som desimalskilletegn i resultatstrengen, er ikke alltid et punktum. det bestemmes av kulturen som styrer formatering.
Følgende eksempel bruker formatantallet "." til å definere plasseringen av desimaltegnet i flere resultatstrenger.
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 egendefinerte anangiren «»,
Tegnet «», fungerer som både et gruppeskilletegn og en tallskaleringsantall.
Gruppeskilletegn: Hvis ett eller flere komma er angitt mellom tosifrede plassholdere (0 eller #) som formaterer de integrerte sifrene i et tall, settes det inn et gruppeskilletegn mellom hver tallgruppe i den integrerte delen av utdataene.
Kulturen bestemmer tegnet som brukes som tallgruppeskilletegn og størrelsen på hver tallgruppe. Hvis for eksempel strengen "#,#" og den invariante kulturen brukes til å formatere tallet 1000, er utdataene "1000".
Tallskaleringsantall: Hvis ett eller flere komma angis umiddelbart til venstre for det eksplisitte eller implisitte desimaltegnet, deles tallet som skal formateres med 1000 for hvert komma. Hvis for eksempel strengen «0», brukes til å formatere tallet 100 millioner, er utdataene «100».
Du kan bruke gruppeskilletegn og tallskaleringsantall i samme formatstreng. Hvis for eksempel strengen «#,0», og den invariante kulturen brukes til å formatere tallet én milliard, er utdataene «1000».
Følgende eksempel illustrerer bruken av kommaet som et gruppeskilletegn.
let
Source =
{
Number.ToText(1234567890, "#,#", ""),
// Displays 1,234,567,890
Number.ToText(1234567890, "#,##0,,", "")
// Displays, 1,235
}
in
Source
Følgende eksempel illustrerer bruken av kommaet som en anangir for tallskalering.
let
Source =
{
Number.ToText(1234567890, "#,,", ""),
// Displays 1235
Number.ToText(1234567890, "#,,,", ""),
// Displays 1
Number.ToText(1234567890, "#,##0,,", "")
// Displays 1,235
}
in
Source
Den egendefinerte spesifisereren %
Et prosenttegn (%) i en formatstreng fører til at et tall multipliseres med 100 før det formateres. Det lokaliserte prosentsymbolet settes inn i tallet på plasseringen der % vises i formatstrengen. Prosenttegnet som brukes, defineres av kulturen.
Eksemplet nedenfor definerer en egendefinert formatstreng som inneholder den egendefinerte spesifisereren %.
let
Source = Number.ToText(.086, "#0.##%", "")
// Displays 8.6%
in
Source
Den egendefinerte anangiren «‰»
Et per mølletegn (‰ eller \u2030) i en formatstreng fører til at et tall multipliseres med 1000 før det formateres. Det riktige per mille-symbolet settes inn i den returnerte strengen på plasseringen der ‰-symbolet vises i formatstrengen. Per mille-tegn som brukes, defineres av kulturen, som gir kulturspesifikk formateringsinformasjon.
Det følgende eksemplet definerer en egendefinert formatstreng som inneholder den egendefinerte anangiren «‰».
let
Source = Number.ToText(.00354, "#0.##" & Character.FromNumber(0x2030), "")
// Displays 3.54‰
in
Source
Egendefinerte e- og e-spesifiserere
Hvis noen av strengene "E", "E+", "E-", "e", "e+" eller "e-" finnes i formatstrengen og etterfølges umiddelbart med minst én null, formateres tallet ved hjelp av vitenskapelig notasjon med en "E" eller "e" satt inn mellom tallet og eksponenten. Antall nuller etter den vitenskapelige notasjonsindikatoren bestemmer minimum antall sifre til utdata for eksponenten. Formatene E+og e+angir at et plusstegn eller minustegn alltid skal stå foran eksponenten. Formatene E, E, e eller e angir at et tegn bare skal være foran negative eksponenter.
Eksemplet nedenfor formaterer flere numeriske verdier ved hjelp av antydningene for vitenskapelig notasjon.
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
Symbolene "#", "0", ".", ","," "%" og "‰" i en formatstreng tolkes som formatangittere i stedet for som litterale tegn. Avhengig av plasseringen i en egendefinert formatstreng, kan store og små bokstaver i tillegg til + og - symbolene også tolkes som formatangittere.
Hvis du vil hindre at et tegn tolkes som en formatangitter, kan du:
- Gå foran den med en omvendt skråstrek.
- Omgi det med ett enkelt anførselstegn.
- Omgi den med to doble anførselstegn.
Hvert av disse tegnene fungerer som escape-tegn. Escape-tegnet betyr at følgende tegn er en tegnlitteral som skal inkluderes i resultatstrengen uendret.
Hvis du vil inkludere en omvendt skråstrek i en resultatstreng, må du fjerne den med en annen omvendt skråstrek (\\
).
Hvis du vil inkludere ett enkelt anførselstegn i en resultatstreng, må du fjerne det med en omvendt skråstrek (\'
). Hvis et annet enkelt anførselstegn som ikke er fjernet før det avbrutte enkeltsitatet, vises omvendt skråstrek i stedet ('\'
viser \
).
Hvis du vil inkludere et dobbelt anførselstegn i en resultatstreng, må du unnslippe to av dem med en omvendt skråstrek (\""
).
Følgende eksempel bruker escape-tegn for å hindre formateringsoperasjonen fra å tolke tegnene #, 0 og "" som enten escape-tegn eller formatantall.
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
Inndelingsskilletegnet ";"
Semikolonet (;) er et betinget formatantall som bruker forskjellig formatering på et tall, avhengig av om verdien er positiv, negativ eller null. Hvis du vil produsere denne virkemåten, kan en egendefinert formatstreng inneholde opptil tre inndelinger atskilt med semikolon. Disse inndelingene er beskrevet i tabellen nedenfor.
Antall inndelinger | Bekrivelse |
---|---|
Én inndeling | Formatstrengen gjelder for alle verdier. |
To inndelinger | Den første delen gjelder positive verdier og nuller, og den andre delen gjelder for negative verdier. Hvis tallet som skal formateres, er negativt, men blir null etter avrunding i henhold til formatet i den andre delen, formateres den resulterende nullen i henhold til den første inndelingen. |
Tre inndelinger | Den første delen gjelder positive verdier, den andre delen gjelder for negative verdier, og den tredje delen gjelder for nuller. Den andre inndelingen kan stå tom (ved å ikke ha noe mellom semikolonene), i så fall gjelder den første inndelingen for alle verdier som ikke er null. Hvis tallet som skal formateres ikke er null, men blir null etter avrunding i henhold til formatet i den første eller andre inndelingen, formateres den resulterende nullen i henhold til den tredje inndelingen. |
Inndelingsskilletegn ignorerer eventuell eksisterende formatering som er knyttet til et tall når den endelige verdien er formatert. Negative verdier vises for eksempel alltid uten minustegn når inndelingsskilletegn brukes. Hvis du vil at den endelige formaterte verdien skal ha et minustegn, bør du eksplisitt inkludere minustegnet som en del av den egendefinerte formatangitteren.
Følgende eksempel bruker formatantallet ;til å formatere positive, negative tall og nulltall på en annen måte.
let
Source =
{
Number.ToText(1234, "##;(##)"),
// Displays 1234
Number.ToText(-1234, "##;(##)"),
// Displays (1234)
Number.ToText(0, "##;(##);**Zero**")
// Displays **Zero**
}
in
Source
Tegnlitteraler
Formatantall som vises i en egendefinert numerisk formatstreng, tolkes alltid som formateringstegn og aldri som litterale tegn. Dette inkluderer følgende tegn:
Alle andre tegn tolkes alltid som tegnlitteraler, og inkluderes i resultatstrengen uendret i en formateringsoperasjon. I en analyseoperasjon må de samsvare nøyaktig med tegnene i inndatastrengen. sammenligningen skiller mellom store og små bokstaver.
Følgende eksempel illustrerer én vanlig bruk av litterale tegnenheter (i dette tilfellet tusenvis):
let
Source = Number.ToText(123.8, "#,##0.0K")
// Displays 123.8K
in
Source
Det finnes to måter å angi at tegn skal tolkes som litterale tegn og ikke som formateringstegn, slik at de kan inkluderes i en resultatstreng eller analyseres i en inndatastreng:
Ved å fjerne et formateringstegn. Hvis du vil ha mer informasjon, kan du gå til Escape-tegn.
Ved å omslutte hele den litterale strengen i sitatapostrofer.
Følgende eksempel bruker begge tilnærmingene til å inkludere reserverte tegn i en egendefinert numerisk formatstreng.
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
Notater
Flyttallsinfiniteter og NaN
Uavhengig av formatstrengen, hvis verdien for en Decimal.Type
, Single.Type
eller Double.Type
flytende punkttype er positiv uendelighet, negativ uendelighet eller ikke et tall (NaN), er den formaterte strengen verdien for de respektive Number.PositiveInfinity, Number.NegativeInfinityeller Number.NaN konstanter angitt av gjeldende kultur.
Avrundings- og fastpunktformatstrenger
For formateringsstrenger med fast punkt (det vil si formatere strenger som ikke inneholder vitenskapelig notasjonsformattegn), avrundes tall til så mange desimaler som det er sifferplassholdere til høyre for desimaltegnet. Hvis formatstrengen ikke inneholder et desimaltegn, avrundes tallet til nærmeste heltall. Hvis tallet har flere sifre enn det er sifferplassholdere til venstre for desimaltegnet, kopieres de ekstra sifrene til resultatstrengen rett før den første sifferplassholderen.
Eksempel
Eksemplet nedenfor viser to egendefinerte numeriske formatstrenger. I begge tilfeller viser sifferplassholderen (#
) de numeriske dataene, 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