Standardowe ciągi formatujące liczby
Ciągi standardowych formatów liczb służą do formatowania popularnych typów liczbowych. Standardowy ciąg formatu liczbowego przyjmuje formę [format specifier][precision specifier]
, gdzie:
Specyfikator formatu to pojedynczy znak alfabetyczny, który określa typ formatu liczbowego, na przykład walutę lub procent. Dowolny ciąg formatu liczb, który zawiera więcej niż jeden znak alfabetyczny, w tym znak odstępu, jest interpretowany jako ciąg niestandardowego formatu liczb. Aby uzyskać więcej informacji, zobacz Niestandardowe ciągi formatu liczbowego.
Specyfikator dokładności to opcjonalna liczba całkowita, która wpływa na liczbę cyfr w wynikowym ciągu. Specyfikator dokładności określa liczbę cyfr w ciągu reprezentującym liczbę.
Gdy specyfikator dokładności kontroluje liczbę cyfr ułamkowych w ciągu wynikowym, ciąg wynikowy odzwierciedla liczbę zaokrągloną do możliwego do reprezentowania wyniku najbliższego nieskończonie dokładnego wyniku.
Uwaga
Specyfikator dokładności określa liczbę cyfr w ciągu wynikowym. Aby wypełnić ciąg wynikowy z spacjami wiodącymi lub końcowymi lub innymi znakami (na przykład 0), użyj funkcji Text.PadStart i Text.PadEnd i użyj ogólnej długości
count
w tych funkcjach, aby wypełnić ciąg wynikowy.
Standardowe ciągi formatu liczbowego są obsługiwane przez funkcję Number.ToText.
Specyfikatory formatu standardowego
W poniższej tabeli opisano standardowe specyfikatory formatu liczbowego i przedstawiono przykładowe dane wyjściowe generowane przez każdy specyfikator formatu. Przejdź do sekcji Uwagi, aby uzyskać dodatkowe informacje na temat używania standardowych ciągów formatu liczbowego i sekcji Przykład kodu, aby uzyskać kompleksową ilustrację ich użycia.
Uwaga
Wynik sformatowanego ciągu dla określonej kultury może się różnić od poniższych przykładów. Ustawienia systemu operacyjnego, ustawienia użytkownika, zmienne środowiskowe i inne ustawienia w systemie, których można użyć, mogą mieć wpływ na format.
Specyfikator formatu | Nazwa/nazwisko | opis | Przykłady |
---|---|---|---|
„C” lub „c” | Waluta | Wynik: wartość waluty. Obsługiwany przez: wszystkie typy liczbowe. Specyfikator dokładności: liczba cyfr dziesiętnych. Domyślny specyfikator dokładności: zdefiniowany przez kulturę. Więcej informacji: Specyfikator formatu waluty ("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” lub „d” | Dziesiętne | Wynik: liczby całkowite z opcjonalnym znakiem minus. Obsługiwane przez: tylko typy całkowite. Specyfikator dokładności: minimalna liczba cyfr. Domyślny specyfikator dokładności: minimalna liczba wymaganych cyfr. Więcej informacji: Specyfikator formatu Dziesiętnego("D"). |
1234 ("D") -> 1234 -1234 ("D6") -> -001234 |
„E” lub „e” | Wartość wykładnicza (naukowa) | Wynik: zapis wykładniczy. Obsługiwany przez: wszystkie typy liczbowe. Specyfikator dokładności: liczba cyfr dziesiętnych. Domyślny specyfikator dokładności: 6. Więcej informacji: Specyfikator formatu wykładniczego ("E"). |
1052.032912756 ("E", en-US) -> 1.052033E+003 1052.032912756 ("e", fr-FR) -> 1052033e+003 -1052.032912756 ("e2", en-US) -> -1.05e+003 -1052.032912756 ("E2", fr-FR) -> -1,05E+003 |
„F” lub „f” | Wartość stałoprzecinkowa | Wynik: cyfry całkowite i dziesiętne z opcjonalnym znakiem minus. Obsługiwany przez: wszystkie typy liczbowe. Specyfikator dokładności: liczba cyfr dziesiętnych. Domyślny specyfikator dokładności: zdefiniowany przez kulturę. Więcej informacji: Specyfikator formatu stałego punktu ("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” lub „g” | Ogólne | Wynik: Bardziej kompaktowy zapis o stałym punkcie lub notacji naukowej. Obsługiwany przez: wszystkie typy liczbowe. Specyfikator dokładności: liczba cyfr znaczących. Domyślny specyfikator dokładności: zależy od typu liczbowego. Więcej informacji: Specyfikator formatu ogólnego ("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” lub „n” | Liczba | Wynik: cyfry całkowite i dziesiętne, separatory grup i separator dziesiętny z opcjonalnym znaku minus. Obsługiwany przez: wszystkie typy liczbowe. Specyfikator dokładności: wymagana liczba miejsc dziesiętnych. Domyślny specyfikator dokładności: zdefiniowany przez kulturę. Więcej informacji: Specyfikator formatu liczbowego ("N"). |
1234.567 ("N", en-US) -> 1,234,57 1234.567 ("N", ru-RU) -> 1 234 57 1234 ("N1", en-US) -> 1234.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” lub „p” | Procent | Wynik: liczba pomnożona przez 100 i wyświetlana z symbolem procentu. Obsługiwany przez: wszystkie typy liczbowe. Specyfikator dokładności: wymagana liczba miejsc dziesiętnych. Domyślny specyfikator dokładności: zdefiniowany przez kulturę. Więcej informacji: Specyfikator formatu procentu ("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” lub „x” | Szesnastkowy | Wynik: ciąg szesnastkowy. Obsługiwane przez: tylko typy całkowite. Specyfikator dokładności: liczba cyfr w ciągu wynikowym. Więcej informacji: Specyfikator formatu szesnastkowego ("X"). |
255 ("X") -> FF -1 ("x") -> ff 255 ("x4") -> 00ff -1 ("X4") -> 00FF |
Jakikolwiek inny pojedynczy znak | Nieznany specyfikator | Wynik: zgłasza błąd wyrażenia w czasie wykonywania. |
Używanie standardowych ciągów formatu liczbowego
Standardowy ciąg formatu liczbowego może służyć do definiowania formatowania wartości liczbowej. Można go przekazać do parametru Number.ToTextformat
. Poniższy przykład formatuje wartość liczbową jako ciąg waluty w bieżącej kulturze (w tym przypadku kultura en-US).
Number.ToText(123.456, "C2")
// Displays $123.46
Opcjonalnie można podać argument count
w funkcjach Text.PadStart i Text.PadEnd, aby określić szerokość pola liczbowego oraz określać, czy jego wartość jest wyrównana do prawej, czy lewej. Na przykład poniższy przykład wyrównuje wartość waluty w polu 28 znaków i wyrównuje wartość waluty w polu 14-znakowym (w przypadku używania czcionki jednowymiarowej).
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
Poniższe sekcje zawierają szczegółowe informacje o poszczególnych ciągach standardowego formatu liczb.
Specyfikator formatu waluty (C)
Specyfikator formatu C (currency) konwertuje liczbę na ciąg przedstawiający kwotę w walucie. Specyfikator dokładności określa żądaną liczbę miejsc dziesiętnych w wynikowym ciągu. Jeśli specyfikator dokładności zostanie pominięty, domyślna liczba miejsc dziesiętnych do użycia w wartościach walutowych wynosi 2.
Jeśli wartość do sformatowania ma więcej miejsc dziesiętnych niż określona lub domyślna liczba miejsc dziesiętnych, wartość ułamkowa zostanie zaokrąglona w wynikowym ciągu. Jeśli wartość na prawo od określonej liczby miejsc dziesiętnych wynosi 5 lub więcej, ostatnia cyfra w ciągu wynikowym jest zaokrąglana w kierunku od zera.
Ciąg wynikowy ma wpływ na informacje o formatowaniu bieżącej kultury.
Poniższy przykład formatuje wartość za pomocą specyfikatora formatu waluty:
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.
Specyfikator formatu dziesiętnego (D)
Specyfikator formatu D (decimal) konwertuje liczbę na ciąg cyfr dziesiętnych (0–9), poprzedzony znakiem minus, jeśli liczba jest ujemna. Ten format jest obsługiwany tylko w przypadku typów całkowitych.
Specyfikator dokładności określa minimalną liczbę miejsc dziesiętnych w ciągu wynikowym. Jeśli to konieczne, liczba jest dopełniana zerami po lewej stronie w celu uzyskania liczby cyfr określonej przez specyfikator dokładności. Jeśli nie zostanie określony specyfikator dokładności, wartością domyślną jest wartość minimalna wymagana do przedstawienia wartości całkowitej bez zer wiodących.
Ciąg wynikowy ma wpływ na informacje o formatowaniu bieżącej kultury.
Poniższy przykład formatuje wartość z specyfikatorem formatu dziesiętnego.
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
Specyfikator formatu wykładniczego (E)
Specyfikator formatu wykładniczego („E”) konwertuje liczbę na ciąg w postaci „-d,ddd...E + ddd” lub „-d,ddd...e+ddd”, gdzie każda litera „d” wskazuje cyfrę (0–9). Ciąg rozpoczyna się od znaku minus, jeśli liczba jest ujemna. Zawsze dokładnie jedna cyfra poprzedza punkt dziesiętny.
Specyfikator dokładności określa żądaną liczbę cyfr po punkcie dziesiętnym. Jeśli specyfikator dokładności zostanie pominięty, domyślnie będzie używanych sześć cyfr po punkcie dziesiętnym.
Wielkość liter specyfikatora formatu wskazuje, czy wykładnik potęgi ma być poprzedzany prefiksem „E”, czy „e”. Wykładnik zawsze składa się ze znaku plus lub minus i co najmniej trzech cyfr. W razie potrzeby wykładnik jest dopełniany zerami w celu spełnienia tego minimum.
Ciąg wynikowy ma wpływ na informacje o formatowaniu bieżącej kultury.
Poniższy przykład formatuje wartość za pomocą specyfikatora formatu wykładniczego:
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
Uwaga
Pusta wartość tekstowa ("") w ostatnim parametrze Number.ToText w poprzednim przykładzie odnosi się do niezmiennej kultury.
Specyfikator formatu stałego punktu (F)
Specyfikator formatu o stałym punkcie ("F") konwertuje liczbę na ciąg formularza "-dddd.ddd..." gdzie każdy znak "d" wskazuje cyfrę (0–9). Ciąg rozpoczyna się od znaku minus, jeśli liczba jest ujemna.
Specyfikator dokładności określa żądaną liczbę miejsc dziesiętnych. Jeśli specyfikator dokładności zostanie pominięty, domyślna liczba miejsc dziesiętnych do użycia w wartościach liczbowych wynosi 2.
Ciąg wynikowy ma wpływ na informacje o formatowaniu bieżącej kultury.
Poniższy przykład formatuje wartość podwójną i całkowitą ze specyfikatorem formatu stałego punktu:
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
Specyfikator formatu ogólnego (G)
Ogólny specyfikator formatu ("G") konwertuje liczbę na bardziej kompaktową notację o stałym punkcie lub notacji naukowej, w zależności od typu liczby i tego, czy specyfikator dokładności jest obecny. Specyfikator dokładności określa maksymalną liczbę cyfr znaczących, które mogą być wyświetlane w ciągu wynikowym. Jeżeli specyfikator dokładności zostanie pominięty lub będzie równy zero, typ liczby określa dokładność domyślną, tak jak opisano w poniższej tabeli.
Typ liczbowy | Dokładność domyślna |
---|---|
Byte.Type lub Int8.Type |
3 cyfry |
Int16.Type |
5 cyfr |
Int32.Type |
10 cyfr |
Int64.Type |
19 cyfr |
Single.Type |
9 cyfr |
Double.Type |
17 cyfr |
Decimal.Type |
15 cyfr |
Notacja stałoprzecinkowa jest używana, jeśli wykładnik, który byłby wynikiem wyrażenia liczby w notacji wykładniczej, jest większy niż -5 i mniejszy niż specyfikator dokładności. W przeciwnym wypadku jest używana notacja wykładnicza. Wynik zawiera punkt dziesiętny, jeśli jest to wymagane, a zera końcowe po punkcie dziesiętnym są pomijane. Jeśli specyfikator dokładności jest obecny i liczba cyfr znaczących w wyniku przekracza określoną dokładność, nadmiarowe cyfry końcowe są usuwane przez zaokrąglenie.
Jeśli jednak liczba jest liczbą Decimal.Type
i specyfikator dokładności zostanie pominięty, notacja o stałym punkcie jest zawsze używana, a końcowe zera są zachowywane.
Jeśli jest używana notacja wykładnicza, wykładnik w wyniku otrzymuje prefiks „E”, jeśli specyfikatorem formatu jest „G”, lub „e”, jeśli specyfikatorem formatu jest „g”. Wykładnik zawiera co najmniej dwie cyfry. Różni się to od formatu notacji wykładniczej tworzonej przez specyfikator formatu wykładniczego, który obejmuje co najmniej trzy cyfry wykładnika.
Ciąg wynikowy ma wpływ na informacje o formatowaniu bieżącej kultury.
Poniższy przykład formatuje assortowane wartości zmiennoprzecinkowe z ogólnym specyfikatorem formatu:
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
Specyfikator formatu liczbowego (N)
Specyfikator formatu liczbowego („N”) konwertuje liczbę na ciąg w postaci „-d ddd ddd,ddd…”, gdzie „-” oznacza w razie potrzeby liczbę ujemną, „d” oznacza cyfrę (0–9), „ ” oznacza separator grupy, a „,” oznacza symbol punktu dziesiętnego. Specyfikator dokładności określa żądaną liczbę cyfr po punkcie dziesiętnym. Jeśli specyfikator dokładności zostanie pominięty, liczba miejsc dziesiętnych jest definiowana przez bieżącą kulturę.
Ciąg wynikowy ma wpływ na informacje o formatowaniu bieżącej kultury.
Poniższy przykład formatuje assortowane wartości zmiennoprzecinkowe z specyfikatorem formatu liczb:
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
Specyfikator formatu procentu (P)
Specyfikator formatu procentowego („P”) mnoży liczbę przez 100 i konwertuje ją na ciąg, który przedstawia wartość procentową. Specyfikator dokładności określa żądaną liczbę miejsc dziesiętnych. Jeśli specyfikator dokładności zostanie pominięty, zostanie użyta domyślna precyzja liczbowa dostarczana przez bieżącą kulturę.
Poniższy przykład formatuje wartości zmiennoprzecinkowe za pomocą specyfikatora formatu procentu:
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
Specyfikator formatu szesnastkowego (X)
Specyfikator formatu szesnastkowego („X”) konwertuje liczbę na ciąg cyfr szesnastkowych. Wielkość liter specyfikatora formatu wskazuje, czy w przypadku cyfr szesnastkowych, które są większe niż 9, należy używać wielkich, czy małych liter. Na przykład użycie specyfikatora „X” umożliwia uzyskanie cyfr „ABCDEF”, a specyfikatora „x” — cyfr „abcdef”. Ten format jest obsługiwany tylko w przypadku typów całkowitych.
Specyfikator dokładności określa minimalną liczbę miejsc dziesiętnych w ciągu wynikowym. Jeśli to konieczne, liczba jest dopełniana zerami po lewej stronie w celu uzyskania liczby cyfr określonej przez specyfikator dokładności.
Ciąg wynikowy nie ma wpływu na informacje o formatowaniu bieżącej kultury.
Poniższy przykład formatuje wartości z specyfikatorem formatu szesnastkowego.
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
Uwagi
Ta sekcja zawiera dodatkowe informacje na temat używania standardowych ciągów formatu liczbowego.
Typy liczb całkowitych i zmiennoprzecinkowych
Niektóre opisy specyfikatorów standardowego formatu liczb odnoszą się do całkowitych lub zmiennoprzecinkowych typów liczbowych. Typy liczb całkowitych to Byte.Type
, , Int8.Type
Int16.Type
, Int32.Type
iInt64.Type
. Typy liczb zmiennoprzecinkowe to Decimal.Type
, Single.Type
i Double.Type
.
Liczba zmiennoprzecinkowa i naN
Niezależnie od ciągu formatu, jeśli wartość Decimal.Type
, Single.Type
lub Double.Type
typ zmiennoprzecinkowy jest dodatnią nieskończonością, nieskończonością ujemną, a nie liczbą (NaN), sformatowany ciąg jest wartością odpowiednich Number.PositiveInfinity, Number.NegativeInfinitylub Number.NaN stałych określonych przez obecnie odpowiednią kulturę.
Przykład kodu
Poniższy przykład formatuje zmiennoprzecinkę i całkowitą wartość liczbową przy użyciu kultury en-US i wszystkich standardowych specyfikatorów formatu liczbowego. W tym przykładzie użyto dwóch określonych typów liczbowych (Double.Type
i ), ale daje podobne wyniki dla dowolnego z innych typów baz liczbowych (Int32.Type
, Byte.Type
Decimal.Type
Int8.Type
, Int16.Type
i Int64.Type
).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