Vlastné reťazce číselného formátu
Môžete vytvoriť vlastný reťazec číselného formátu, ktorý sa skladá z jednej alebo viacerých vlastných číselných špecifikácií, na definovanie spôsobu formátovania číselných údajov. Vlastný reťazec číselného formátu je reťazec formátu, ktorý nie je reťazcom štandardného číselného formátu.
Nasledujúca tabuľka popisuje špecifikátory vlastného číselného formátu a zobrazuje ukážkový výstup vytvorený jednotlivými špecifikáciami formátu. Prejdite do časti Poznámky, kde nájdete ďalšie informácie o používaní vlastných reťazcov číselného formátu a časť Príklad na komplexnú ilustráciu ich použitia.
Špecifikátor formátu | Názov | Popis | Príklady |
---|---|---|---|
"0" | Zástupný symbol nuly | Nahradí nulu zodpovedajúcou číslicou, ak je prítomná; V opačnom prípade sa vo výslednom reťazci zobrazí nula. Ďalšie informácie: Vlastné špecifikátory "0". |
1234.5678 ("00000") -> 01235 0.45678 ("0.00", en-US) -> 0,46 0,45678 ("0.00", fr-FR) -> 0,46 |
"#" | Zástupný symbol číslice | Nahradí symbol #zodpovedajúcou číslicou, ak je prítomná. V opačnom prípade sa vo výslednom reťazci nezobrazí žiadna číslica. Vo výslednom reťazci sa nezobrazí žiadna číslica, ak zodpovedajúca číslica vo vstupnom reťazci je nevýznamná hodnota 0. Napríklad 0003 ("####") -> 3. Ďalšie informácie: Vlastné špecifikátor "#". |
1234.5678 ("#####") –> 1235 0.45678 ("#.##", en-US) –> .46 0.45678 ("#.##", fr-FR) –> ,46 |
"." | Desatinné miesto | Určí umiestnenie oddeľovača desatinných miest vo výslednom reťazci. Ďalšie informácie: The "." Vlastné špecifikátory. |
0.45678 ("0.00", en-US) -> 0,46 0,45678 ("0.00", fr-FR) -> 0,46 |
"," | Oddeľovač skupín a škálovanie čísel | Slúži ako oddeľovač skupín a špecifikátor na škálovanie čísel. Ako oddeľovač skupiny vloží medzi každú skupinu znak oddeľovača lokalizovanej skupiny. Ako špecifikátor na škálovanie čísel vydelí číslo číslo 1000 pre každú zadanú čiarku. Ďalšie informácie: Vlastné špecifikátor ",". |
Špecifikátor oddeľovača skupín: 2147483647 ("##,#", en-US) –> 2 147 483 647 2147483647 ("##,#", es-ES) –> 2.147.483.647 Špecifikátor škálovania: 2147483647 ("#,#,,", en-US) -> 2 147 2147483647 ("#,#,,", es-ES) –> 2.147 |
"%" | Zástupný objekt percenta | Vynásobí číslo číslom 100 a vloží lokalizovaný percentuálny symbol do výsledného reťazca. Ďalšie informácie: Vlastné špecifikátor "%". |
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 % |
"‰" | Zástupný objekt na mlyn | Vynásobí číslo číslom 1 000 a vloží lokalizovaný symbol na milimeter do výsledného reťazca. Ďalšie informácie: Vlastné špecifikátory "→". |
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" |
Exponenciálny zápis | Ak nasleduje aspoň jedna desatina (nula), naformátuje výsledok pomocou exponenciálneho zápisu. Prípad symbolu "E" alebo "e" označuje prípad exponentného symbolu vo výslednom reťazci. Počet núl, ktoré nasledujú za znakom E alebo e, určuje minimálny počet číslic v exponente. Znamienko plus (+) označuje, že znak znamienka sa vždy nachádza pred exponentom. Znamienko mínus (-) označuje, že znak znamienka predchádza iba záporným exponentívom. Ďalšie informácie: Vlastné špecifikácie "E" a "e". |
987654 ("#0.0e0") –> 98.8e4 1503.92311 ("0.0##e+00") –> 1,504e+03 1.8901385E-16 ("0.0e+00") -> 1.9e-16 |
"\", "''", """" | Koncové znaky | Spôsobí, že nasledujúci znak alebo znaky sa budú interpretovať ako literál a nie ako špecifikácia vlastného formátu. Ďalšie informácie: Koncové znaky. |
987654 ("\###00\#") -> #987654# 987654 ("'#'##00'#'") -> #987654# 987654 (""#""##00""#"") -> #987654# |
'reťazec' "string" (reťazec) |
Oddeľovač doslovných reťazcov | Označuje, že uzavreté znaky sa majú skopírovať do výsledného reťazca bez zmeny. Ďalšie informácie: Literály znakov. |
68 ("# 'degrees') -> 68 stupňov 68 ("#' degrees'") -> 68 stupňov |
; | Oddeľovač sekcií | Definuje sekcie so samostatnými reťazcami formátu pre kladné, záporné a nulové čísla. Ďalšie informácie: The ";" Oddeľovač sekcií. |
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) |
Iné | Všetky ostatné znaky | Znak sa skopíruje do výsledného reťazca bez zmeny. Ďalšie informácie: Literály znakov. |
68 ("# °") –> 68 ° |
V nasledujúcich častiach nájdete podrobné informácie o každej špecifikácii vlastného číselného formátu.
Vlastné špecifikátor "0"
Špecifikátor vlastného formátu "0" slúži ako symbol zástupného symbolu nuly. Ak má formátovaná hodnota číslicu na pozícii, kde sa zobrazuje nula v reťazci formátu, táto číslica sa skopíruje do výsledného reťazca; V opačnom prípade sa vo výslednom reťazci zobrazí nula. Pozícia úplne vľavo nula pred desatinnou bodkou a úplne vpravo nula za desatinnou bodkou určuje rozsah číslic, ktoré sa vždy nachádzajú vo výslednom reťazci.
Špecifikácia 00 spôsobí, že hodnota sa zaokrúhli na najbližšiu číslicu pred desatinným číslom, kde sa vždy použije zaokrúhlenie od nuly. Napríklad formátovanie 34,5 pomocou hodnoty "00" by viedlo k hodnote 35.
Nasledujúci príklad zobrazuje niekoľko hodnôt, ktoré sú formátované pomocou vlastných reťazcov formátu, ktoré zahŕňajú nulové zástupné symboly.
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
Poznámka
Prázdna textová hodnota ("") v poslednom parametri Number.ToText v predchádzajúcej ukážke odkazuje na invariantnú jazykovú verziu.
Vlastné špecifikátor "#"
Špecifikácia vlastného formátu #slúži ako symbol zástupného symbolu číslice. Ak má formátovaná hodnota číslicu na pozícii, v ktorej sa v reťazci formátu zobrazuje symbol #, táto číslica sa skopíruje do výsledného reťazca. V opačnom prípade sa v tejto pozícii vo výslednom reťazci nič neukladá.
Všimnite si, že táto špecifikácia nikdy nezobrazuje nulu, ktorá nie je významnou číslicou, a to ani v prípade, že nula je jedinou číslicou v reťazci. Zobrazí sa nula iba vtedy, ak ide o významnú číslicu v čísle, ktoré sa zobrazuje.
Reťazec formátu ##spôsobí, že hodnota sa zaokrúhli na najbližšiu číslicu predchádzajúcu desatinné číslo, kde sa vždy použije zaokrúhlenie od nuly. Napríklad formátovanie 34,5 pomocou ##" by viedlo k hodnote 35.
Nasledujúci príklad zobrazuje niekoľko hodnôt, ktoré sú formátované pomocou vlastných reťazcov formátu, ktoré zahŕňajú zástupné symboly číslic.
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
Ak chcete vrátiť reťazec výsledku, v ktorom sa chýbajúce číslice alebo úvodné nuly nahradia medzerami, použite Text.PadStart a zadajte šírku poľa, ako je znázornené v nasledujúcom príklade.
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'
Vlastný špecifikátor "."
Špecifikácia vlastného formátu vloží lokalizovaný oddeľovač desatinných miest do výsledného reťazca. Prvé obdobie v reťazci formátu určuje umiestnenie oddeľovača desatinných miest vo formátovanej hodnote. všetky ďalšie obdobia sa ignorujú. Ak špecifikátor formátu končí reťazcom "." do výsledného reťazca sa naformátujú iba významné číslice.
Znak, ktorý sa používa ako oddeľovač desatinných miest vo výslednom reťazci, nie je vždy bodkou. je určená jazykovou verziou, ktorá ovláda formátovanie.
Nasledujúci príklad používa špecifikátor formátu "." na definovanie umiestnenia desatinnej čiarky v niekoľkých výsledných reťazcoch.
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
Vlastný špecifikátor ",".
Znak "," slúži ako oddeľovač skupiny a špecifikáciu na škálovanie čísel.
Oddeľovač skupín: Ak sú medzi dvomi zástupnými symbolmi číslic (0 alebo #) zadané čiarky, ktoré formátujú celočíselné číslice čísla, medzi každú číselnú skupinu v integrálnej časti výstupu sa vloží znak oddeľovača skupín.
Kultúra určuje znak, ktorý sa používa ako oddeľovač číselných skupín, a veľkosť každej číselnej skupiny. Ak sa napríklad reťazec "#,#" a invariantná jazyková verzia používajú na formátovanie čísla 1 000, výstup je 1 000.
Špecifikácia škálovania čísel: Ak je hneď naľavo od explicitnej alebo implicitnej desatinnej čiarky zadané jedno alebo viac čiarok, číslo, ktoré sa má formátovať, sa vydelí číslom 1 000 pre každú čiarku. Ak sa napríklad reťazec "0," použije na formátovanie čísla 100 miliónov, výstup je 100.
Oddeľovač skupín a špecifikátory na škálovanie čísel môžete použiť v rovnakom reťazci formátu. Ak sa napríklad reťazec "#,0," a invariantná kultúra používajú na formátovanie čísla jedna miliarda, výstup je 1 000.
Nasledujúci príklad ilustruje použitie čiarky ako oddeľovača skupiny.
let
Source =
{
Number.ToText(1234567890, "#,#", ""),
// Displays 1,234,567,890
Number.ToText(1234567890, "#,##0,,", "")
// Displays, 1,235
}
in
Source
Nasledujúci príklad ilustruje použitie čiarky ako špecifikátoru na škálovanie čísel.
let
Source =
{
Number.ToText(1234567890, "#,,", ""),
// Displays 1235
Number.ToText(1234567890, "#,,,", ""),
// Displays 1
Number.ToText(1234567890, "#,##0,,", "")
// Displays 1,235
}
in
Source
Vlastný špecifikátor "%"
Znak percenta (%) v reťazci formátu spôsobí, že číslo sa pred naformátovaním vynásobí číslom 100. Symbol lokalizovaného percenta je vložený do čísla na mieste, kde sa zobrazuje % v reťazci formátu. Použitý znak percenta je definovaný jazykovou verziou.
Nasledujúci príklad definuje vlastný reťazec formátu, ktorý obsahuje vlastné špecifikátory "%".
let
Source = Number.ToText(.086, "#0.##%", "")
// Displays 8.6%
in
Source
Vlastný špecifikátor "→"
Znak na milimeter (" alebo \u2030) v reťazci formátu spôsobí, že číslo sa pred naformátovaním vynásobí číslom 1000. Príslušný symbol na milimeter sa vloží do vráteného reťazca na miesto, kde sa v reťazci formátu zobrazí symbol . Použitý znak na milimeter je definovaný jazykovou verziou, ktorá poskytuje informácie o formátovaní špecifické pre jazykovú verziu.
Nasledujúci príklad definuje vlastný reťazec formátu, ktorý obsahuje vlastné špecifikátory ..
let
Source = Number.ToText(.00354, "#0.##" & Character.FromNumber(0x2030), "")
// Displays 3.54‰
in
Source
Vlastné špecifikátory "E" a "e"
Ak sa v reťazci formátu nachádzajú reťazce "E", "E+", "e", "e", "e+" alebo "e-", za ktorými bezprostredne nasleduje aspoň jedna nula, číslo sa formátuje pomocou vedeckého zápisu s vloženým medzi číslom a exponentom s "E" alebo "e". Počet núl, ktoré nasledujú po indikátore vedeckého zápisu, určuje minimálny počet číslic, ktoré sa majú pre exponent výstupovať. Formáty E+a e+označujú, že exponentom by mal vždy predchádzať znamienko plus alebo znamienko mínus. Formáty "E", "E-", "e" alebo "e-" označujú, že znak znaku má predchádzať iba záporným exponentívom.
Nasledujúci príklad formátuje niekoľko číselných hodnôt pomocou špecifikácií pre vedecký zápis.
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
Koncové znaky
Symboly "#", "0", ".", ",", "%" a "→" v reťazci formátu sa interpretujú ako špecifikátory formátu, a nie ako doslovné znaky. V závislosti od ich pozície v reťazci vlastného formátu je tiež možné symboly interpretovať ako špecifikátory formátu veľké a malé písmená "E", ako aj symboly + a .
Ak chcete zabrániť interpretácii znaku ako špecifikátoru formátu, môžete:
- Predchádzajte jej opačnou lomkou.
- Obklopte ju jednou úvodzovkou.
- Obklopte ho dvomi dvojitými úvodzovkami.
Každý z týchto znakov funguje ako koncové znaky. Znak úniku znamená, že nasledujúci znak je znakový literál, ktorý by sa mal zahrnúť do výsledného reťazca bez zmeny.
Ak chcete do výsledného reťazca zahrnúť opačnú lomku, musíte sa jej vyhnúť s ďalšou opačnou lomkou (\\
).
Ak chcete do výsledného reťazca zahrnúť jednu úvodzovku, musíte sa jej vyhnúť opačnou lomkou (\'
). Ak pred úvodzovkou utiekol ďalší jednoduchý úvodzovka, namiesto toho sa zobrazí opačná lomka ('\'
zobrazí \
sa ).
Ak chcete do výsledného reťazca vložiť dvojitú úvodzovku, musíte dvoch z nich uniknúť opačnou lomkou (\""
).
Nasledujúci príklad používa koncové znaky, aby zabránil operácii formátovania interpretovať znaky "#", "0" a "" ako koncové znaky alebo špecifikátory formátu.
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
Oddeľovač sekcií ";"
Bodkočiarka (;) je špecifikátor podmieneného formátu, ktorý používa rôzne formátovanie na číslo v závislosti od toho, či je jeho hodnota kladná, záporná alebo nulová. Na vytvorenie tohto správania môže vlastný reťazec formátu obsahovať až tri sekcie oddelené bodkočiarkami. Tieto sekcie sú popísané v nasledujúcej tabuľke.
Počet sekcií | Popis |
---|---|
Jedna sekcia | Reťazec formátu sa vzťahuje na všetky hodnoty. |
Dve sekcie | Prvá sekcia sa vzťahuje na kladné hodnoty a nuly, a druhá sekcia sa vzťahuje na záporné hodnoty. Ak je číslo, ktoré sa má formátovať, záporné, ale po zaokrúhlení podľa formátu v druhej sekcii sa zaokrúhľuje na nulu, výsledná nula sa naformátuje podľa prvej sekcie. |
Tri sekcie | Prvá sekcia sa vzťahuje na kladné hodnoty, druhá sekcia sa vzťahuje na záporné hodnoty a tretia sekcia sa vzťahuje na nuly. Druhá sekcia môže byť prázdna (tým, že medzi bodkočiarkami nie je nič), v takom prípade sa prvá sekcia vzťahuje na všetky nenulové hodnoty. Ak je číslo, ktoré sa má formátovať, nenulové, ale po zaokrúhlení podľa formátu v prvej alebo druhej sekcii sa stane nulou, výsledná nula sa naformátuje podľa tretej sekcie. |
Oddeľovače sekcií ignorujú akékoľvek predbežné formátovanie priradené číslu pri formátovaní konečnej hodnoty. Napríklad záporné hodnoty sa vždy zobrazujú bez znamienka mínus, keď sa používajú oddeľovače sekcií. Ak chcete, aby konečná naformátovaná hodnota mala znamienko mínus, mali by ste výslovne zahrnúť znamienko mínus ako súčasť špecifikátoru vlastného formátu.
Nasledujúci príklad používa špecifikátor formátu ;na odlišné formátovanie kladných, záporných a nulových čísel.
let
Source =
{
Number.ToText(1234, "##;(##)"),
// Displays 1234
Number.ToText(-1234, "##;(##)"),
// Displays (1234)
Number.ToText(0, "##;(##);**Zero**")
// Displays **Zero**
}
in
Source
Znakové literáli
Špecifikátory formátu, ktoré sa zobrazujú vo vlastnom reťazci číselného formátu, sa vždy interpretujú ako formátovacie znaky a nikdy ako doslovné znaky. Patria sem nasledujúce znaky:
Všetky ostatné znaky sa vždy interpretujú ako znakové literáky a v rámci operácie formátovania sa vo výslednom reťazci bez zmeny zahrnú. Pri analýze sa musia presne zhodovať so znakmi vo vstupnom reťazci; V porovnaní sa rozlišuje veľké a malé písmená.
Nasledujúci príklad ilustruje jedno spoločné použitie jednotiek znakov literálu (v tomto prípade tisíc):
let
Source = Number.ToText(123.8, "#,##0.0K")
// Displays 123.8K
in
Source
Existujú dva spôsoby, ako naznačiť, že znaky sa majú interpretovať ako doslovné znaky, a nie ako formátovacie znaky, takže môžu byť zahrnuté do výsledného reťazca alebo úspešne analyzované vo vstupnom reťazci:
Tým, že sa vyhnú znaku formátovania. Ďalšie informácie nájdete v časti Uniknúť znakom.
Uzavrite celý literálový reťazec do úvodzoviek apostrofov.
Nasledujúci príklad používa oba prístupy, aby zahrnul vyhradené znaky do vlastného reťazca číselného formátu.
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
Poznámky
Nekonečnosti s pohyblivou desatinnou čiarkou a NaN
Bez ohľadu na reťazec formátu, ak je hodnota Decimal.Type
, Single.Type
alebo Double.Type
typ s pohyblivou desatinnou čiarkou je kladné nekonečno, záporné nekonečno alebo nie číslo (NaN), formátovaný reťazec je hodnotou príslušných Number.PositiveInfinity, Number.NegativeInfinityalebo Number.NaN konštátov zadaných aktuálne príslušnou jazykovou verziou.
Zaokrúhlenie reťazcov formátu s pevným bodom
V prípade reťazcov formátu s pevným bodom (t. j. reťazce formátu, ktoré neobsahujú znaky formátu vedeckého zápisu), sa čísla zaokrúhlia na toľko desatinných miest, koľko je napravo od desatinnej čiarky zástupné symboly číslic. Ak reťazec formátu neobsahuje desatinnú bodku, číslo sa zaokrúhli na najbližšie celé číslo. Ak má číslo viac číslic, ako sú zástupné symboly číslic naľavo od desatinnej čiarky, číslice navyše sa skopírujú do výsledného reťazca bezprostredne pred zástupným symbolom prvej číslice.
Príklad
Nasledujúci príklad znázorní dva vlastné reťazce číselného formátu. V oboch prípadoch zástupný symbol číslice (#
) zobrazí číselné údaje a všetky ostatné znaky sa skopírujú do výsledného reťazca.
let
Source =
{
Number.ToText(1234567890, "(###) ###-####"),
// Displays (123) 456-7890
Number.ToText(42, "My Number = #")
// Displays My number = 42
}
in
Source