BigInteger.Parse Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Převede řetězcové vyjádření čísla na jeho BigInteger ekvivalent.
Přetížení
| Name | Description |
|---|---|
| Parse(String, NumberStyles, IFormatProvider) |
Převede řetězcovou reprezentaci čísla v zadaném stylu a formátu specifickém pro jazykovou verzi na jeho BigInteger ekvivalent. |
| Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider) |
Převede reprezentaci čísla obsaženého v zadaném rozsahu znaků jen pro čtení v zadaném stylu na jeho BigInteger ekvivalent. |
| Parse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider) | |
| Parse(String, IFormatProvider) |
Převede řetězcovou reprezentaci čísla v zadaném formátu specifickém pro jazykovou verzi na jeho BigInteger ekvivalent. |
| Parse(ReadOnlySpan<Byte>, IFormatProvider) | |
| Parse(ReadOnlySpan<Char>, IFormatProvider) |
Parsuje rozsah znaků do hodnoty. |
| Parse(String, NumberStyles) |
Převede řetězcové vyjádření čísla v zadaném stylu na jeho BigInteger ekvivalent. |
| Parse(String) |
Převede řetězcové vyjádření čísla na jeho BigInteger ekvivalent. |
Parse(String, NumberStyles, IFormatProvider)
- Zdroj:
- BigInteger.cs
- Zdroj:
- BigInteger.cs
- Zdroj:
- BigInteger.cs
- Zdroj:
- BigInteger.cs
Převede řetězcovou reprezentaci čísla v zadaném stylu a formátu specifickém pro jazykovou verzi na jeho BigInteger ekvivalent.
public:
static System::Numerics::BigInteger Parse(System::String ^ value, System::Globalization::NumberStyles style, IFormatProvider ^ provider);
public:
static System::Numerics::BigInteger Parse(System::String ^ value, System::Globalization::NumberStyles style, IFormatProvider ^ provider) = System::Numerics::INumberBase<System::Numerics::BigInteger>::Parse;
public static System.Numerics.BigInteger Parse(string value, System.Globalization.NumberStyles style, IFormatProvider provider);
public static System.Numerics.BigInteger Parse(string value, System.Globalization.NumberStyles style, IFormatProvider? provider);
static member Parse : string * System.Globalization.NumberStyles * IFormatProvider -> System.Numerics.BigInteger
Public Shared Function Parse (value As String, style As NumberStyles, provider As IFormatProvider) As BigInteger
Parametry
- value
- String
Řetězec obsahující číslo, které se má převést.
- style
- NumberStyles
Bitová kombinace hodnot výčtu, které určují povolený formát value.
- provider
- IFormatProvider
Objekt, který poskytuje informace o valueformátování specifické pro jazykovou verzi .
Návraty
Hodnota, která je ekvivalentní číslu zadanému v parametru value .
Implementuje
Výjimky
style není NumberStyles hodnota.
-or-
style
AllowHexSpecifier obsahuje spolu s jinou hodnotou příznak nebo HexNumber příznak.
value je null.
value není v souladu se vstupním vzorem určeným parametrem style.
Příklady
Následující příklad provádí několik volání Parse(String, NumberStyles, IFormatProvider) metody pomocí různých kombinací hodnot pro parametry style a provider parametry.
// Call parse with default values of style and provider
Console.WriteLine(BigInteger.Parse(" -300 ",
NumberStyles.Integer, CultureInfo.CurrentCulture));
// Call parse with default values of style and provider supporting tilde as negative sign
Console.WriteLine(BigInteger.Parse(" ~300 ",
NumberStyles.Integer, new BigIntegerFormatProvider()));
// Call parse with only AllowLeadingWhite and AllowTrailingWhite
// Exception thrown because of presence of negative sign
try
{
Console.WriteLine(BigInteger.Parse(" ~300 ",
NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite,
new BigIntegerFormatProvider()));
}
catch (FormatException e)
{
Console.WriteLine("{0}: \n {1}", e.GetType().Name, e.Message);
}
// Call parse with only AllowHexSpecifier
// Exception thrown because of presence of negative sign
try
{
Console.WriteLine(BigInteger.Parse("-3af", NumberStyles.AllowHexSpecifier,
new BigIntegerFormatProvider()));
}
catch (FormatException e)
{
Console.WriteLine("{0}: \n {1}", e.GetType().Name, e.Message);
}
// Call parse with only NumberStyles.None
// Exception thrown because of presence of white space and sign
try
{
Console.WriteLine(BigInteger.Parse(" -300 ", NumberStyles.None,
new BigIntegerFormatProvider()));
}
catch (FormatException e)
{
Console.WriteLine("{0}: \n {1}", e.GetType().Name, e.Message);
}
// The example displays the followingoutput:
// -300
// -300
// FormatException:
// The value could not be parsed.
// FormatException:
// The value could not be parsed.
// FormatException:
// The value could not be parsed.
// Call parse with default values of style and provider
printfn $"""{BigInteger.Parse(" -300 ", NumberStyles.Integer, CultureInfo.CurrentCulture)}"""
// Call parse with default values of style and provider supporting tilde as negative sign
printfn $"""{BigInteger.Parse(" ~300 ", NumberStyles.Integer, new BigIntegerFormatProvider())}"""
// Call parse with only AllowLeadingWhite and AllowTrailingWhite
// Exception thrown because of presence of negative sign
try
printfn
$"""{BigInteger.Parse(
" ~300 ",
NumberStyles.AllowLeadingWhite ||| NumberStyles.AllowTrailingWhite,
new BigIntegerFormatProvider()
)}"""
with :? FormatException as e ->
printfn $"{e.GetType().Name}: \n {e.Message}"
// Call parse with only AllowHexSpecifier
// Exception thrown because of presence of negative sign
try
printfn $"""{BigInteger.Parse("-3af", NumberStyles.AllowHexSpecifier, new BigIntegerFormatProvider())}"""
with :? FormatException as e ->
printfn $"{e.GetType().Name}: \n {e.Message}"
// Call parse with only NumberStyles.None
// Exception thrown because of presence of white space and sign
try
printfn $"""{BigInteger.Parse(" -300 ", NumberStyles.None, new BigIntegerFormatProvider())}"""
with :? FormatException as e ->
printfn $"{e.GetType().Name}: \n {e.Message}"
// The example displays the followingoutput:
// -300
// -300
// FormatException:
// The value could not be parsed.
// FormatException:
// The value could not be parsed.
// FormatException:
// The value could not be parsed.
' Call parse with default values of style and provider
Console.WriteLine(BigInteger.Parse(" -300 ", _
NumberStyles.Integer, CultureInfo.CurrentCulture))
' Call parse with default values of style and provider supporting tilde as negative sign
Console.WriteLine(BigInteger.Parse(" ~300 ", _
NumberStyles.Integer, New BigIntegerFormatProvider()))
' Call parse with only AllowLeadingWhite and AllowTrailingWhite
' Exception thrown because of presence of negative sign
Try
Console.WriteLIne(BigInteger.Parse(" ~300 ", _
NumberStyles.AllowLeadingWhite Or NumberStyles.AllowTrailingWhite, _
New BigIntegerFormatProvider()))
Catch e As FormatException
Console.WriteLine("{0}: {1} {2}", e.GetType().Name, vbCrLf, e.Message)
End Try
' Call parse with only AllowHexSpecifier
' Exception thrown because of presence of negative sign
Try
Console.WriteLIne(BigInteger.Parse("-3af", NumberStyles.AllowHexSpecifier, _
New BigIntegerFormatProvider()))
Catch e As FormatException
Console.WriteLine("{0}: {1} {2}", e.GetType().Name, vbCrLf, e.Message)
End Try
' Call parse with only NumberStyles.None
' Exception thrown because of presence of white space and sign
Try
Console.WriteLIne(BigInteger.Parse(" -300 ", NumberStyles.None, _
New BigIntegerFormatProvider()))
Catch e As FormatException
Console.WriteLine("{0}: {1} {2}", e.GetType().Name, vbCrLf, e.Message)
End Try
' The example displays the following output:
' -300
' -300
' FormatException:
' The value could not be parsed.
' FormatException:
' The value could not be parsed.
' FormatException:
' The value could not be parsed.
Několik jednotlivých volání metody Parse(String, NumberStyles, IFormatProvider) předá instanci následující BigIntegerFormatProvider třídy, která definuje vlnovku (~) jako záporné znaménko.
public class BigIntegerFormatProvider : IFormatProvider
{
public object GetFormat(Type formatType)
{
if (formatType == typeof(NumberFormatInfo))
{
NumberFormatInfo numberFormat = new NumberFormatInfo();
numberFormat.NegativeSign = "~";
return numberFormat;
}
else
{
return null;
}
}
}
type BigIntegerFormatProvider() =
interface IFormatProvider with
member _.GetFormat(formatType: Type) =
if formatType = typeof<NumberFormatInfo> then
let numberFormat = NumberFormatInfo()
numberFormat.NegativeSign <- "~"
numberFormat
else
null
Public Class BigIntegerFormatProvider : Implements IFormatProvider
Public Function GetFormat(formatType As Type) As Object _
Implements IFormatProvider.GetFormat
If formatType Is GetType(NumberFormatInfo) Then
Dim numberFormat As New NumberFormatInfo
numberFormat.NegativeSign = "~"
Return numberFormat
Else
Return Nothing
End If
End Function
End Class
Poznámky
Parametr style definuje prvky stylu (například prázdné znaky, symbol kladného nebo záporného znaménka, symbol oddělovače skupin nebo symbol desetinné čárky), které jsou v parametru value povolené pro úspěšnou operaci analýzy.
styles musí být kombinací bitových příznaků z výčtu NumberStyles . Parametr style tuto metodu přetíží, pokud value obsahuje řetězcovou reprezentaci šestnáctkové hodnoty, když číselný systém (desítkový nebo šestnáctkový) reprezentovaný value je znám pouze za běhu, nebo pokud chcete zakázat prázdné znaky nebo symbol znaku .value
V závislosti na hodnotě styleparametru value může obsahovat následující prvky:
[ws][$][sign][digits,]digits[.fractional_digits][E[sign]exponential_digits][ws]
Pokud style tento parametr obsahuje NumberStyles.AllowHexSpecifier, value může obsahovat následující prvky:
[ws]hexdigits[ws]
Prvky v hranatých závorkách ([ a ]) jsou volitelné. Následující tabulka popisuje jednotlivé prvky.
| prvek | Description |
|---|---|
| Ws | Volitelné prázdné znaky. Prázdné znaky se můžou zobrazit na začátku value , pokud style příznak obsahuje NumberStyles.AllowLeadingWhite , a může se zobrazit na konci value , pokud style příznak NumberStyles.AllowTrailingWhite obsahuje. |
| $ | Symbol měny specifický pro jazykovou verzi. Jeho pozice v řetězci je definována vlastnostmi NumberFormatInfo.CurrencyNegativePattern jazykové NumberFormatInfo.CurrencyPositivePattern verze označené parametrem provider . Symbol měny aktuální jazykové verze se může zobrazit v value případě, že style obsahuje NumberStyles.AllowCurrencySymbol příznak. |
| znaménko | Volitelné znaménko. Znaménko se může zobrazit na začátku value , pokud style příznak obsahuje NumberStyles.AllowLeadingSign , a může se zobrazit na konci value , pokud style příznak NumberStyles.AllowTrailingSign obsahuje. Závorky lze použít value k označení záporné hodnoty, pokud style obsahuje NumberStyles.AllowParentheses příznak. |
|
Číslic Fractional_digits exponential_digits |
Posloupnost číslic od 0 do 9. Pro fractional_digits je platná pouze číslice 0. |
| , | Symbol oddělovače skupin specifických pro jazykovou verzi. Symbol oddělovače skupin jazykové verze určené jazykovou provider verzí se může zobrazit v value případě, že style obsahuje NumberStyles.AllowThousands příznak. |
| . | Symbol desetinné čárky specifické pro jazykovou verzi. Symbol desetinné čárky jazykové verze určené jazykovou provider verzí se může zobrazit, value pokud style obsahuje NumberStyles.AllowDecimalPoint příznak. Pouze číslice 0 se může zobrazit jako desetinná číslice pro úspěšnou operaci analýzy; pokud fractional_digits obsahuje jakoukoli jinou FormatException číslici, vyvolá se znak. |
| E | Znak "e" nebo "E", který označuje, že hodnota je reprezentována exponenciálním (vědeckým) zápisem. Parametr value může představovat číslo v exponenciálním zápisuNumberStyles.AllowExponent, pokud style obsahuje příznak. |
| hexdigits | Posloupnost šestnáctkových číslic od 0 do f nebo 0 až F. |
Poznámka:
Všechny ukončující nulové znaky (U+0000) jsou s ignorovány operací analýzy bez ohledu na hodnotu argumentu style .
Řetězec s číslicemi (který odpovídá NumberStyles.None stylu) se vždy úspěšně parsuje. Většina zbývajících NumberStyles členů ovládacích prvků, které mohou být přítomny, ale nemusí být přítomny ve vstupním řetězci. Následující tabulka uvádí, jak jednotlivé NumberStyles členy ovlivňují prvky, které mohou být přítomny v value.
| Hodnota NumberStyles | Prvky povolené v hodnotě kromě číslic |
|---|---|
| None | Pouze prvek číslic . |
| AllowDecimalPoint | Prvky desetinné čárky (.) a desetinné čárky . |
| AllowExponent | Znak "e" nebo "E", který označuje exponenciální zápis. spolu s exponential_digits. |
| AllowLeadingWhite | Prvek ws na začátku .value |
| AllowTrailingWhite | Prvek ws na konci .value |
| AllowLeadingSign | Prvek znaménka na začátku znaku value. |
| AllowTrailingSign | Prvek znaménka na konci znaku value. |
| AllowParentheses | Prvek znaménka ve formě závorek ohraničující číselnou hodnotu. |
| AllowThousands | Element oddělovače skupin (,). |
| AllowCurrencySymbol | Prvek měny ($). |
| Currency | Všechny prvky.
value Nelze však reprezentovat šestnáctkové číslo nebo číslo v exponenciálním zápisu. |
| Float | Prvek ws na začátku nebo konci znakuvalue, na začátku valueznaku a desetinné čárky (.) symbol. Parametr value může také použít exponenciální zápis. |
| Number | Prvky ws, signoddělovač skupin (,) a desetinná čárka (.). |
| Any | Všechny prvky.
value Nelze však reprezentovat šestnáctkové číslo. |
Důležité
Pokud metodu Parse použijete k zaokrouhlování řetězcové BigInteger reprezentace hodnoty, která byla výstupem ToString metody, měli byste použít BigInteger.ToString(String) metodu se specifikátorem formátu "R" k vygenerování řetězcové BigInteger reprezentace hodnoty. V opačném případě řetězcové BigInteger vyjádření zachovává pouze 50 nejvýznamnějších číslic původní hodnoty a data mohou být ztracena při použití Parse metody k obnovení BigInteger hodnoty.
Na rozdíl od ostatních NumberStyles hodnot, které umožňují, ale nevyžadují přítomnost určitých prvků stylu v value, NumberStyles.AllowHexSpecifier hodnota stylu znamená, že jednotlivé číselné znaky jsou value vždy interpretovány jako šestnáctkové znaky. Platné šestnáctkové znaky jsou 0-9, A-F a a-f. Jedinými dalšími příznaky, které lze kombinovat s parametrem style , jsou NumberStyles.AllowLeadingWhite a NumberStyles.AllowTrailingWhite. (Výčet NumberStyles obsahuje složený styl čísla, HexNumberkterý obsahuje oba příznaky prázdných znaků.)
Poznámka:
Pokud value je řetězcová reprezentace šestnáctkového čísla, nemůže jí předcházet žádná dekorace (například 0x nebo &h), která ji odlišuje jako šestnáctkové číslo. To způsobí selhání převodu.
Pokud value je šestnáctkový řetězec, Parse(String, NumberStyles) metoda interpretuje value jako záporné číslo uložené pomocí dvou doplňkových reprezentací, pokud jsou jeho první dvě šestnáctkové číslice větší nebo rovno 0x80. Jinými slovy, metoda interpretuje bit nejvyššího pořadí prvního bajtu jako value bit znaménka. Aby bylo zajištěno, že šestnáctkový řetězec je správně interpretován jako kladné číslo, musí mít první číslice value hodnotu nula. Metoda například interpretuje 0x80 jako zápornou hodnotu, ale interpretuje buď 0x080 nebo 0x0080 jako kladnou hodnotu. Následující příklad ukazuje rozdíl mezi šestnáctkovými řetězci, které představují záporné a kladné hodnoty.
using System;
using System.Globalization;
using System.Numerics;
public class Example
{
public static void Main()
{
string[] hexStrings = { "80", "E293", "F9A2FF", "FFFFFFFF",
"080", "0E293", "0F9A2FF", "0FFFFFFFF",
"0080", "00E293", "00F9A2FF", "00FFFFFFFF" };
foreach (string hexString in hexStrings)
{
BigInteger number = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier);
Console.WriteLine("Converted 0x{0} to {1}.", hexString, number);
}
}
}
// The example displays the following output:
// Converted 0x80 to -128.
// Converted 0xE293 to -7533.
// Converted 0xF9A2FF to -417025.
// Converted 0xFFFFFFFF to -1.
// Converted 0x080 to 128.
// Converted 0x0E293 to 58003.
// Converted 0x0F9A2FF to 16360191.
// Converted 0x0FFFFFFFF to 4294967295.
// Converted 0x0080 to 128.
// Converted 0x00E293 to 58003.
// Converted 0x00F9A2FF to 16360191.
// Converted 0x00FFFFFFFF to 4294967295.
open System.Globalization
open System.Numerics
let hexStrings =
[| "80"
"E293"
"F9A2FF"
"FFFFFFFF"
"080"
"0E293"
"0F9A2FF"
"0FFFFFFFF"
"0080"
"00E293"
"00F9A2FF"
"00FFFFFFFF" |]
for hexString in hexStrings do
let number = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier)
printfn $"Converted 0x{hexString} to {number:N0}."
// The example displays the following output:
// Converted 0x80 to -128.
// Converted 0xE293 to -7533.
// Converted 0xF9A2FF to -417025.
// Converted 0xFFFFFFFF to -1.
// Converted 0x080 to 128.
// Converted 0x0E293 to 58003.
// Converted 0x0F9A2FF to 16360191.
// Converted 0x0FFFFFFFF to 4294967295.
// Converted 0x0080 to 128.
// Converted 0x00E293 to 58003.
// Converted 0x00F9A2FF to 16360191.
// Converted 0x00FFFFFFFF to 4294967295.
Imports System.Globalization
Imports System.Numerics
Module Example
Public Sub Main()
Dim hexStrings() As String = { "80", "E293", "F9A2FF", "FFFFFFFF",
"080", "0E293", "0F9A2FF", "0FFFFFFFF",
"0080", "00E293", "00F9A2FF", "00FFFFFFFF" }
For Each hexString As String In hexStrings
Dim number As BigInteger = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier)
Console.WriteLine("Converted 0x{0} to {1}.", hexString, number)
Next
End Sub
End Module
' The example displays the following output:
' Converted 0x80 to -128.
' Converted 0xE293 to -7533.
' Converted 0xF9A2FF to -417025.
' Converted 0xFFFFFFFF to -1.
' Converted 0x080 to 128.
' Converted 0x0E293 to 58003.
' Converted 0x0F9A2FF to 16360191.
' Converted 0x0FFFFFFFF to 4294967295.
' Converted 0x0080 to 128.
' Converted 0x00E293 to 58003.
' Converted 0x00F9A2FF to 16360191.
' Converted 0x00FFFFFFFF to 4294967295.
Parametr provider je IFormatProvider implementace. Jeho GetFormat metoda vrátí NumberFormatInfo objekt, který poskytuje informace specifické pro jazykovou verzi o formátu value.
provider Obvykle se může jednat o jednu z následujících možností:
Objekt CultureInfo , který představuje jazykovou verzi, která poskytuje informace o číselném formátování. Jeho GetFormat metoda vrátí NumberFormatInfo objekt, který poskytuje informace o číselném formátování.
Objekt NumberFormatInfo , který poskytuje informace o formátování. (Její implementace GetFormat pouze vrátí sama sebe.)
Vlastní objekt, který implementuje IFormatProvider a používá metodu GetFormat k vytvoření instance a vrácení objektu NumberFormatInfo , který poskytuje informace o formátování.
Pokud provider ano null, NumberFormatInfo použije se objekt pro aktuální jazykovou verzi.
Viz také
Platí pro
Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)
- Zdroj:
- BigInteger.cs
- Zdroj:
- BigInteger.cs
- Zdroj:
- BigInteger.cs
- Zdroj:
- BigInteger.cs
Převede reprezentaci čísla obsaženého v zadaném rozsahu znaků jen pro čtení v zadaném stylu na jeho BigInteger ekvivalent.
public static System.Numerics.BigInteger Parse(ReadOnlySpan<char> value, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Integer, IFormatProvider? provider = default);
public static System.Numerics.BigInteger Parse(ReadOnlySpan<char> value, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Integer, IFormatProvider provider = default);
static member Parse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider -> System.Numerics.BigInteger
Public Shared Function Parse (value As ReadOnlySpan(Of Char), Optional style As NumberStyles = System.Globalization.NumberStyles.Integer, Optional provider As IFormatProvider = Nothing) As BigInteger
Parametry
- value
- ReadOnlySpan<Char>
Rozsah znaků, které obsahují číslo, které se má převést, je jen pro čtení.
- style
- NumberStyles
Bitová kombinace hodnot výčtu, které určují povolený formát value.
- provider
- IFormatProvider
Objekt, který poskytuje informace o valueformátování specifické pro jazykovou verzi .
Návraty
Hodnota, která je ekvivalentní číslu zadanému v parametru value .
Implementuje
Výjimky
style není NumberStyles hodnota.
-or-
style
AllowHexSpecifier obsahuje spolu s jinou hodnotou příznak nebo HexNumber příznak.
value je null.
value není v souladu se vstupním vzorem určeným parametrem style.
Poznámky
Parametr style definuje prvky stylu (například prázdné znaky, symbol kladného nebo záporného znaménka, symbol oddělovače skupin nebo symbol desetinné čárky), které jsou v parametru value povolené pro úspěšnou operaci analýzy.
styles musí být kombinací bitových příznaků z výčtu NumberStyles . Parametr style tuto metodu přetíží, pokud value obsahuje reprezentaci šestnáctkové hodnoty, když číselný systém (desítkový nebo šestnáctkový) reprezentovaný value je znám pouze za běhu, nebo pokud chcete zakázat prázdné znaky nebo symbol znaku .value
V závislosti na hodnotě styleparametru value může obsahovat následující prvky:
[ws][$][sign][digits,]digits[.fractional_digits][E[sign]exponential_digits][ws]
Pokud style tento parametr obsahuje NumberStyles.AllowHexSpecifier, value může obsahovat následující prvky:
[ws]hexdigits[ws]
Prvky v hranatých závorkách ([ a ]) jsou volitelné. Následující tabulka popisuje jednotlivé prvky.
| prvek | Description |
|---|---|
| Ws | Volitelné prázdné znaky. Prázdné znaky se můžou zobrazit na začátku value , pokud style příznak obsahuje NumberStyles.AllowLeadingWhite , a může se zobrazit na konci value , pokud style příznak NumberStyles.AllowTrailingWhite obsahuje. |
| $ | Symbol měny specifický pro jazykovou verzi. Jeho pozice value je definována vlastnostmi NumberFormatInfo.CurrencyNegativePatternNumberFormatInfo.CurrencyPositivePattern jazykové verze označené parametrem provider . Symbol měny aktuální jazykové verze se může zobrazit v value případě, že style obsahuje NumberStyles.AllowCurrencySymbol příznak. |
| znaménko | Volitelné znaménko. Znaménko se může zobrazit na začátku value , pokud style příznak obsahuje NumberStyles.AllowLeadingSign , a může se zobrazit na konci value , pokud style příznak NumberStyles.AllowTrailingSign obsahuje. Závorky lze použít value k označení záporné hodnoty, pokud style obsahuje NumberStyles.AllowParentheses příznak. |
|
Číslic Fractional_digits exponential_digits |
Posloupnost číslic od 0 do 9. Pro fractional_digits je platná pouze číslice 0. |
| , | Symbol oddělovače skupin specifických pro jazykovou verzi. Symbol oddělovače skupin jazykové verze určené jazykovou provider verzí se může zobrazit v value případě, že style obsahuje NumberStyles.AllowThousands příznak. |
| . | Symbol desetinné čárky specifické pro jazykovou verzi. Symbol desetinné čárky jazykové verze určené jazykovou provider verzí se může zobrazit, value pokud style obsahuje NumberStyles.AllowDecimalPoint příznak. Pouze číslice 0 se může zobrazit jako desetinná číslice pro úspěšnou operaci analýzy; pokud fractional_digits obsahuje jakoukoli jinou FormatException číslici, vyvolá se znak. |
| E | Znak "e" nebo "E", který označuje, že hodnota je reprezentována exponenciálním (vědeckým) zápisem. Parametr value může představovat číslo v exponenciálním zápisuNumberStyles.AllowExponent, pokud style obsahuje příznak. |
| hexdigits | Posloupnost šestnáctkových číslic od 0 do f nebo 0 až F. |
Poznámka:
Všechny ukončující nulové znaky (U+0000) jsou s ignorovány operací analýzy bez ohledu na hodnotu argumentu style .
A value s číslicemi (které odpovídají NumberStyles.None stylu) se vždy úspěšně parsuje. Většina zbývajících NumberStyles členů ovládací prvky, které mohou být přítomny, ale nejsou nutné, aby byly přítomny, v value. Následující tabulka uvádí, jak jednotlivé NumberStyles členy ovlivňují prvky, které mohou být přítomny v value.
| Hodnota NumberStyles | Prvky povolené v hodnotě kromě číslic |
|---|---|
| None | Pouze prvek číslic . |
| AllowDecimalPoint | Prvky desetinné čárky (.) a desetinné čárky . |
| AllowExponent | Znak "e" nebo "E", který označuje exponenciální zápis. spolu s exponential_digits. |
| AllowLeadingWhite | Prvek ws na začátku .value |
| AllowTrailingWhite | Prvek ws na konci .value |
| AllowLeadingSign | Prvek znaménka na začátku znaku value. |
| AllowTrailingSign | Prvek znaménka na konci znaku value. |
| AllowParentheses | Prvek znaménka ve formě závorek ohraničující číselnou hodnotu. |
| AllowThousands | Element oddělovače skupin (,). |
| AllowCurrencySymbol | Prvek měny ($). |
| Currency | Všechny prvky.
value Nelze však reprezentovat šestnáctkové číslo nebo číslo v exponenciálním zápisu. |
| Float | Prvek ws na začátku nebo konci znakuvalue, na začátku valueznaku a desetinné čárky (.) symbol. Parametr value může také použít exponenciální zápis. |
| Number | Prvky ws, signoddělovač skupin (,) a desetinná čárka (.). |
| Any | Všechny prvky.
value Nelze však reprezentovat šestnáctkové číslo. |
Na rozdíl od ostatních NumberStyles hodnot, které umožňují, ale nevyžadují přítomnost určitých prvků stylu v value, NumberStyles.AllowHexSpecifier hodnota stylu znamená, že jednotlivé číselné znaky jsou value vždy interpretovány jako šestnáctkové znaky. Platné šestnáctkové znaky jsou 0-9, A-F a a-f. Jedinými dalšími příznaky, které lze kombinovat s parametrem style , jsou NumberStyles.AllowLeadingWhite a NumberStyles.AllowTrailingWhite. (Výčet NumberStyles obsahuje složený styl čísla, HexNumberkterý obsahuje oba příznaky prázdných znaků.)
Parametr provider je IFormatProvider implementace. Jeho GetFormat metoda vrátí NumberFormatInfo objekt, který poskytuje informace specifické pro jazykovou verzi o formátu value.
provider Obvykle se může jednat o jednu z následujících možností:
Objekt CultureInfo , který představuje jazykovou verzi, která poskytuje informace o číselném formátování. Jeho GetFormat metoda vrátí NumberFormatInfo objekt, který poskytuje informace o číselném formátování.
Objekt NumberFormatInfo , který poskytuje informace o formátování. (Její implementace GetFormat pouze vrátí sama sebe.)
Vlastní objekt, který implementuje IFormatProvider a používá metodu GetFormat k vytvoření instance a vrácení objektu NumberFormatInfo , který poskytuje informace o formátování.
Pokud provider ano null, NumberFormatInfo použije se objekt pro aktuální jazykovou verzi.
Viz také
Platí pro
Parse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider)
public static System.Numerics.BigInteger Parse(ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Integer, IFormatProvider? provider = default);
static member Parse : ReadOnlySpan<byte> * System.Globalization.NumberStyles * IFormatProvider -> System.Numerics.BigInteger
Public Shared Function Parse (utf8Text As ReadOnlySpan(Of Byte), Optional style As NumberStyles = System.Globalization.NumberStyles.Integer, Optional provider As IFormatProvider = Nothing) As BigInteger
Parametry
- utf8Text
- ReadOnlySpan<Byte>
- style
- NumberStyles
- provider
- IFormatProvider
Návraty
Implementuje
Platí pro
Parse(String, IFormatProvider)
- Zdroj:
- BigInteger.cs
- Zdroj:
- BigInteger.cs
- Zdroj:
- BigInteger.cs
- Zdroj:
- BigInteger.cs
Převede řetězcovou reprezentaci čísla v zadaném formátu specifickém pro jazykovou verzi na jeho BigInteger ekvivalent.
public:
static System::Numerics::BigInteger Parse(System::String ^ value, IFormatProvider ^ provider);
public:
static System::Numerics::BigInteger Parse(System::String ^ value, IFormatProvider ^ provider) = IParsable<System::Numerics::BigInteger>::Parse;
public static System.Numerics.BigInteger Parse(string value, IFormatProvider provider);
public static System.Numerics.BigInteger Parse(string value, IFormatProvider? provider);
static member Parse : string * IFormatProvider -> System.Numerics.BigInteger
Public Shared Function Parse (value As String, provider As IFormatProvider) As BigInteger
Parametry
- value
- String
Řetězec obsahující číslo, které se má převést.
- provider
- IFormatProvider
Objekt, který poskytuje informace o valueformátování specifické pro jazykovou verzi .
Návraty
Hodnota, která je ekvivalentní číslu zadanému v parametru value .
Implementuje
Výjimky
value je null.
value není ve správném formátu.
Příklady
Následující příklady ukazují dva způsoby, jak definovat vlnovku (~) jako záporné znaménko pro formátování BigInteger hodnot. Všimněte si, že chcete-li zobrazit BigInteger hodnoty ve stejném formátu jako původní řetězce, váš kód musí volat metodu BigInteger.ToString(IFormatProvider) a předat ho NumberFormatInfo objektu, který poskytuje informace o formátování.
První příklad definuje třídu, která implementuje IFormatProvider a používá metodu GetFormat k vrácení objektu NumberFormatInfo , který poskytuje informace o formátování.
public class BigIntegerFormatProvider : IFormatProvider
{
public object GetFormat(Type formatType)
{
if (formatType == typeof(NumberFormatInfo))
{
NumberFormatInfo numberFormat = new NumberFormatInfo();
numberFormat.NegativeSign = "~";
return numberFormat;
}
else
{
return null;
}
}
}
type BigIntegerFormatProvider() =
interface IFormatProvider with
member _.GetFormat(formatType: Type) =
if formatType = typeof<NumberFormatInfo> then
let numberFormat = NumberFormatInfo()
numberFormat.NegativeSign <- "~"
numberFormat
else
null
Public Class BigIntegerFormatProvider : Implements IFormatProvider
Public Function GetFormat(formatType As Type) As Object _
Implements IFormatProvider.GetFormat
If formatType Is GetType(NumberFormatInfo) Then
Dim numberFormat As New NumberFormatInfo
numberFormat.NegativeSign = "~"
Return numberFormat
Else
Return Nothing
End If
End Function
End Class
Objekt BigInteger se pak dá vytvořit pomocí následujícího kódu:
BigInteger number = BigInteger.Parse("~6354129876", new BigIntegerFormatProvider());
// Display value using same formatting information
Console.WriteLine(number.ToString(new BigIntegerFormatProvider()));
// Display value using formatting of current culture
Console.WriteLine(number);
let number = BigInteger.Parse("~6354129876", BigIntegerFormatProvider())
printfn $"{number.ToString(BigIntegerFormatProvider())}"
printfn $"{number}"
Dim number As BigInteger = BigInteger.Parse("~6354129876", New BigIntegerFormatProvider)
' Display value using same formatting information
Console.WriteLine(number.ToString(New BigIntegerFormatProvider))
' Display value using formatting of current culture
Console.WriteLine(number)
Druhý příklad je jednodušší. Předá objekt, NumberFormatInfo který poskytuje informace o formátování parametru provider .
NumberFormatInfo fmt = new NumberFormatInfo();
fmt.NegativeSign = "~";
BigInteger number = BigInteger.Parse("~6354129876", fmt);
// Display value using same formatting information
Console.WriteLine(number.ToString(fmt));
// Display value using formatting of current culture
Console.WriteLine(number);
let fmt = NumberFormatInfo()
fmt.NegativeSign <- "~"
let number = BigInteger.Parse("~6354129876", fmt)
printfn $"{number.ToString fmt}"
printfn $"{number}"
Dim fmt As New NumberFormatInfo()
fmt.NegativeSign = "~"
Dim number As BigInteger = BigInteger.Parse("~6354129876", fmt)
' Display value using same formatting information
Console.WriteLine(number.ToString(fmt))
' Display value using formatting of current culture
Console.WriteLine(number)
Poznámky
Parametr value by měl být řetězcovou reprezentací čísla v následující podobě:
[ws][znaménko]digits[ws]
Prvky v hranatých závorkách ([ a ]) jsou volitelné. Následující tabulka popisuje jednotlivé prvky.
| prvek | Description |
|---|---|
| Ws | Volitelné prázdné znaky. |
| znaménko | Volitelné znaménko. Platné znaky znaménka jsou určeny NumberFormatInfo.NegativeSign a NumberFormatInfo.PositiveSign vlastnosti objektu NumberFormatInfo , který je vrácen provider metodou objektu GetFormat . |
| Číslic | Posloupnost číslic v rozsahu od 0 do 9 Všechny počáteční nuly se ignorují. |
Poznámka:
Řetězec určený parametrem value je interpretován pomocí NumberStyles.Integer stylu. Nesmí obsahovat žádné oddělovače skupin ani oddělovač desetinných míst a nesmí obsahovat desetinnou část.
Důležité
Pokud metodu Parse použijete k zaokrouhlování řetězcové BigInteger reprezentace hodnoty, která byla výstupem ToString metody, měli byste použít BigInteger.ToString(String) metodu se specifikátorem formátu "R" k vygenerování řetězcové BigInteger reprezentace hodnoty. V opačném případě řetězcové BigInteger vyjádření zachovává pouze 50 nejvýznamnějších číslic původní hodnoty a data mohou být ztracena při použití Parse metody k obnovení BigInteger hodnoty.
Parametr provider je IFormatProvider implementace, jejíž GetFormat metoda vrací NumberFormatInfo objekt, který poskytuje informace o formátování specifické pro jazykovou verzi.
Parse(String, IFormatProvider) Při vyvolání metody volá metodu provider parametru GetFormat a předá jí Type objekt, který představuje NumberFormatInfo typ. Metoda GetFormat pak vrátí NumberFormatInfo objekt, který poskytuje informace o formátu parametru value . Existují tři způsoby použití parametru provider k zadání vlastních informací o formátování do operace analýzy:
Můžete předat CultureInfo objekt, který představuje jazykovou verzi, která poskytuje informace o formátování. Jeho GetFormat metoda vrátí NumberFormatInfo objekt, který poskytuje číselné formátování informace pro danou jazykovou verzi.
Můžete předat skutečný NumberFormatInfo objekt, který poskytuje informace o číselném formátování. (Její implementace GetFormat pouze vrátí sama sebe.)
Můžete předat vlastní objekt, který implementuje IFormatProvider. Jeho GetFormat metoda vytvoří instanci a vrátí NumberFormatInfo objekt, který poskytuje informace o formátování.
Pokud provider je null, formátování value je interpretováno na NumberFormatInfo základě objektu aktuální jazykové verze.
Viz také
Platí pro
Parse(ReadOnlySpan<Byte>, IFormatProvider)
public:
static System::Numerics::BigInteger Parse(ReadOnlySpan<System::Byte> utf8Text, IFormatProvider ^ provider) = IUtf8SpanParsable<System::Numerics::BigInteger>::Parse;
public static System.Numerics.BigInteger Parse(ReadOnlySpan<byte> utf8Text, IFormatProvider? provider);
static member Parse : ReadOnlySpan<byte> * IFormatProvider -> System.Numerics.BigInteger
Public Shared Function Parse (utf8Text As ReadOnlySpan(Of Byte), provider As IFormatProvider) As BigInteger
Parametry
- utf8Text
- ReadOnlySpan<Byte>
- provider
- IFormatProvider
Návraty
Implementuje
Platí pro
Parse(ReadOnlySpan<Char>, IFormatProvider)
- Zdroj:
- BigInteger.cs
- Zdroj:
- BigInteger.cs
- Zdroj:
- BigInteger.cs
- Zdroj:
- BigInteger.cs
Parsuje rozsah znaků do hodnoty.
public:
static System::Numerics::BigInteger Parse(ReadOnlySpan<char> s, IFormatProvider ^ provider) = ISpanParsable<System::Numerics::BigInteger>::Parse;
public static System.Numerics.BigInteger Parse(ReadOnlySpan<char> s, IFormatProvider? provider);
static member Parse : ReadOnlySpan<char> * IFormatProvider -> System.Numerics.BigInteger
Public Shared Function Parse (s As ReadOnlySpan(Of Char), provider As IFormatProvider) As BigInteger
Parametry
- s
- ReadOnlySpan<Char>
Rozsah znaků, které se mají analyzovat.
- provider
- IFormatProvider
Objekt, který poskytuje informace o sformátování specifické pro jazykovou verzi .
Návraty
Výsledek analýzy s.
Implementuje
Platí pro
Parse(String, NumberStyles)
- Zdroj:
- BigInteger.cs
- Zdroj:
- BigInteger.cs
- Zdroj:
- BigInteger.cs
- Zdroj:
- BigInteger.cs
Převede řetězcové vyjádření čísla v zadaném stylu na jeho BigInteger ekvivalent.
public:
static System::Numerics::BigInteger Parse(System::String ^ value, System::Globalization::NumberStyles style);
public static System.Numerics.BigInteger Parse(string value, System.Globalization.NumberStyles style);
static member Parse : string * System.Globalization.NumberStyles -> System.Numerics.BigInteger
Public Shared Function Parse (value As String, style As NumberStyles) As BigInteger
Parametry
- value
- String
Řetězec obsahující číslo, které se má převést.
- style
- NumberStyles
Bitová kombinace hodnot výčtu, které určují povolený formát value.
Návraty
Hodnota, která je ekvivalentní číslu zadanému v parametru value .
Výjimky
style není NumberStyles hodnota.
-or-
style
AllowHexSpecifier obsahuje spolu s jinou hodnotou příznak nebo HexNumber příznak.
value je null.
value není v souladu se vstupním vzorem určeným parametrem NumberStyles.
Příklady
Následující příklad ukazuje volání Parse(String, NumberStyles) metody s několika možnými hodnotami parametru style . Ukazuje, jak interpretovat řetězec jako šestnáctkovou hodnotu a jak zakázat mezery a symboly znaménka.
BigInteger number;
// Method should succeed (white space and sign allowed)
number = BigInteger.Parse(" -68054 ", NumberStyles.Integer);
Console.WriteLine(number);
// Method should succeed (string interpreted as hexadecimal)
number = BigInteger.Parse("68054", NumberStyles.AllowHexSpecifier);
Console.WriteLine(number);
// Method call should fail: sign not allowed
try
{
number = BigInteger.Parse(" -68054 ", NumberStyles.AllowLeadingWhite
| NumberStyles.AllowTrailingWhite);
Console.WriteLine(number);
}
catch (FormatException e)
{
Console.WriteLine(e.Message);
}
// Method call should fail: white space not allowed
try
{
number = BigInteger.Parse(" 68054 ", NumberStyles.AllowLeadingSign);
Console.WriteLine(number);
}
catch (FormatException e)
{
Console.WriteLine(e.Message);
}
//
// The method produces the following output:
//
// -68054
// 426068
// Input string was not in a correct format.
// Input string was not in a correct format.
let number = BigInteger.Parse(" -68054 ", NumberStyles.Integer)
printfn $"{number}"
let number = BigInteger.Parse("68054", NumberStyles.AllowHexSpecifier)
printfn $"{number}"
try
let number =
BigInteger.Parse(" -68054 ", NumberStyles.AllowLeadingWhite ||| NumberStyles.AllowTrailingWhite)
printfn $"{number}"
with :? FormatException as e ->
printfn $"{e.Message}"
try
let number = BigInteger.Parse(" 68054 ", NumberStyles.AllowLeadingSign)
printfn $"{number}"
with :? FormatException as e ->
printfn $"{e.Message}"
// The method produces the following output:
// -68054
// 426068
// Input string was not in a correct format.
// Input string was not in a correct format.
Dim number As BigInteger
' Method should succeed (white space and sign allowed)
number = BigInteger.Parse(" -68054 ", NumberStyles.Integer)
Console.WriteLine(number)
' Method should succeed (string interpreted as hexadecimal)
number = BigInteger.Parse("68054", NumberStyles.AllowHexSpecifier)
Console.WriteLine(number)
' Method call should fail: sign not allowed
Try
number = BigInteger.Parse(" -68054 ", NumberStyles.AllowLeadingWhite _
Or NumberStyles.AllowTrailingWhite)
Console.WriteLine(number)
Catch e As FormatException
Console.WriteLine(e.Message)
End Try
' Method call should fail: white space not allowed
Try
number = BigInteger.Parse(" 68054 ", NumberStyles.AllowLeadingSign)
Console.WriteLine(number)
Catch e As FormatException
Console.WriteLine(e.Message)
End Try
'
' The method produces the following output:
'
' -68054
' 426068
' Input string was not in a correct format.
' Input string was not in a correct format.
Poznámky
Parametr style definuje prvky stylu (například prázdné znaky, symbol kladného nebo záporného znaménka, symbol oddělovače skupin nebo symbol desetinné čárky), které jsou v parametru value povolené pro úspěšnou operaci analýzy.
styles musí být kombinací bitových příznaků z výčtu NumberStyles . Parametr style tuto metodu přetíží, pokud value obsahuje řetězcovou reprezentaci šestnáctkové hodnoty, když číselný systém (desítkový nebo šestnáctkový) reprezentovaný value je znám pouze za běhu, nebo pokud chcete zakázat prázdné znaky nebo symbol znaku .value
V závislosti na hodnotě styleparametru value může obsahovat následující prvky:
[ws][$][sign][digits,]digits[.fractional_digits][E[sign]exponential_digits][ws]
Pokud style obsahuje NumberStyles.AllowHexSpecifierparametr, value může obsahovat následující prvky:
[ws]hexdigits[ws]
Prvky v hranatých závorkách ([ a ]) jsou volitelné. Následující tabulka popisuje jednotlivé prvky.
| prvek | Description |
|---|---|
| Ws | Volitelné prázdné znaky. Prázdné znaky se můžou zobrazit na začátku value , pokud style příznak obsahuje NumberStyles.AllowLeadingWhite , a může se zobrazit na konci value , pokud style příznak NumberStyles.AllowTrailingWhite obsahuje. |
| $ | Symbol měny specifický pro jazykovou verzi. Jeho pozice v řetězci je definována vlastnostmi NumberFormatInfo.CurrencyNegativePatternNumberFormatInfo.CurrencyPositivePattern aktuální jazykové verze. Symbol měny aktuální jazykové verze se může zobrazit v value případě, že style obsahuje NumberStyles.AllowCurrencySymbol příznak. |
| znaménko | Volitelné znaménko. Znaménko se může zobrazit na začátku value , pokud style příznak obsahuje NumberStyles.AllowLeadingSign , a může se zobrazit na konci value , pokud style příznak NumberStyles.AllowTrailingSign obsahuje. Závorky lze použít value k označení záporné hodnoty, pokud style obsahuje NumberStyles.AllowParentheses příznak. |
|
Číslic Fractional_digits exponential_digits |
Posloupnost číslic od 0 do 9. Pro fractional_digits je platná pouze číslice 0. |
| , | Symbol oddělovače skupin specifických pro jazykovou verzi. Oddělovač skupin aktuální jazykové verze se může zobrazit, value pokud style příznak NumberStyles.AllowThousands obsahuje. |
| . | Symbol desetinné čárky specifické pro jazykovou verzi. Symbol desetinné čárky aktuální jazykové verze se může zobrazit, value pokud style příznak obsahuje NumberStyles.AllowDecimalPoint . Pouze číslice 0 se může zobrazit jako desetinná číslice pro úspěšnou operaci analýzy; pokud fractional_digits obsahuje jakoukoli jinou FormatException číslici, vyvolá se znak. |
| E | Znak "e" nebo "E", který označuje, že hodnota je reprezentována exponenciálním (vědeckým) zápisem. Parametr value může představovat číslo v exponenciálním zápisuNumberStyles.AllowExponent, pokud style obsahuje příznak. |
| hexdigits | Posloupnost šestnáctkových číslic od 0 do f nebo 0 až F. |
Poznámka:
Všechny ukončující nulové znaky (U+0000) jsou s ignorovány operací analýzy bez ohledu na hodnotu argumentu style .
Řetězec s číslicemi (který odpovídá NumberStyles.None stylu) se vždy úspěšně parsuje. Většina zbývajících NumberStyles členů ovládacích prvků, které mohou být přítomny, ale nemusí být přítomny ve vstupním řetězci. Následující tabulka uvádí, jak jednotlivé NumberStyles členy ovlivňují prvky, které mohou být přítomny v value.
NumberStyles hodnota |
Prvky povolené value kromě číslic |
|---|---|
| None | Pouze prvek číslic . |
| AllowDecimalPoint | Prvky desetinné čárky (.) a desetinné čárky . |
| AllowExponent | Znak "e" nebo "E", který označuje exponenciální notaci spolu s exponential_digits. |
| AllowLeadingWhite | Prvek ws na začátku .value |
| AllowTrailingWhite | Prvek ws na konci .value |
| AllowLeadingSign | Prvek znaménka na začátku znaku value. |
| AllowTrailingSign | Prvek znaménka na konci znaku value. |
| AllowParentheses | Prvek znaménka ve formě závorek ohraničující číselnou hodnotu. |
| AllowThousands | Element oddělovače skupin (,). |
| AllowCurrencySymbol | Prvek měny ($). |
| Currency | Všechny prvky.
value Nelze však reprezentovat šestnáctkové číslo nebo číslo v exponenciálním zápisu. |
| Float | Prvek ws na začátku nebo konci znakuvalue, na začátku valueznaku a desetinné čárky (.) symbol. Parametr value může také použít exponenciální zápis. |
| Number | Prvky ws, signoddělovač skupin (,) a desetinná čárka (.). |
| Any | Všechny prvky.
value Nelze však reprezentovat šestnáctkové číslo. |
Důležité
Pokud metodu Parse použijete k zaokrouhlování řetězcové BigInteger reprezentace hodnoty, která byla výstupem ToString metody, měli byste použít BigInteger.ToString(String) metodu se specifikátorem formátu "R" k vygenerování řetězcové BigInteger reprezentace hodnoty. V opačném případě řetězcové BigInteger vyjádření zachovává pouze 50 nejvýznamnějších číslic původní hodnoty a data mohou být ztracena při použití Parse metody k obnovení BigInteger hodnoty.
Na rozdíl od ostatních NumberStyles hodnot, které umožňují, ale nevyžadují, přítomnost určitých prvků stylu v value, NumberStyles.AllowHexSpecifier hodnota stylu znamená, že jednotlivé číselné znaky jsou value vždy interpretovány jako šestnáctkové znaky. Platné šestnáctkové znaky jsou 0-9, A-F a a-f. Jedinými dalšími příznaky, které lze kombinovat s parametrem style , jsou NumberStyles.AllowLeadingWhite a NumberStyles.AllowTrailingWhite. (Výčet NumberStyles obsahuje složený styl čísla, HexNumberkterý obsahuje oba příznaky prázdných znaků.)
Poznámka:
Pokud value je řetězcová reprezentace šestnáctkového čísla, nemůže jí předcházet žádná dekorace (například 0x nebo &h), která ji odlišuje jako šestnáctkové číslo. To způsobí selhání převodu.
Pokud value je šestnáctkový řetězec, Parse(String, NumberStyles) metoda interpretuje value jako záporné číslo uložené pomocí dvou doplňkových reprezentací, pokud jsou jeho první dvě šestnáctkové číslice větší nebo rovno 0x80. Jinými slovy, metoda interpretuje bit nejvyššího pořadí prvního bajtu jako value bit znaménka. Aby bylo zajištěno, že šestnáctkový řetězec je správně interpretován jako kladné číslo, musí mít první číslice value hodnotu nula. Metoda například interpretuje 0x80 jako zápornou hodnotu, ale interpretuje buď 0x080 nebo 0x0080 jako kladnou hodnotu. Následující příklad ukazuje rozdíl mezi šestnáctkovými řetězci, které představují záporné a kladné hodnoty.
using System;
using System.Globalization;
using System.Numerics;
public class Example
{
public static void Main()
{
string[] hexStrings = { "80", "E293", "F9A2FF", "FFFFFFFF",
"080", "0E293", "0F9A2FF", "0FFFFFFFF",
"0080", "00E293", "00F9A2FF", "00FFFFFFFF" };
foreach (string hexString in hexStrings)
{
BigInteger number = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier);
Console.WriteLine("Converted 0x{0} to {1}.", hexString, number);
}
}
}
// The example displays the following output:
// Converted 0x80 to -128.
// Converted 0xE293 to -7533.
// Converted 0xF9A2FF to -417025.
// Converted 0xFFFFFFFF to -1.
// Converted 0x080 to 128.
// Converted 0x0E293 to 58003.
// Converted 0x0F9A2FF to 16360191.
// Converted 0x0FFFFFFFF to 4294967295.
// Converted 0x0080 to 128.
// Converted 0x00E293 to 58003.
// Converted 0x00F9A2FF to 16360191.
// Converted 0x00FFFFFFFF to 4294967295.
open System.Globalization
open System.Numerics
let hexStrings =
[| "80"
"E293"
"F9A2FF"
"FFFFFFFF"
"080"
"0E293"
"0F9A2FF"
"0FFFFFFFF"
"0080"
"00E293"
"00F9A2FF"
"00FFFFFFFF" |]
for hexString in hexStrings do
let number = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier)
printfn $"Converted 0x{hexString} to {number:N0}."
// The example displays the following output:
// Converted 0x80 to -128.
// Converted 0xE293 to -7533.
// Converted 0xF9A2FF to -417025.
// Converted 0xFFFFFFFF to -1.
// Converted 0x080 to 128.
// Converted 0x0E293 to 58003.
// Converted 0x0F9A2FF to 16360191.
// Converted 0x0FFFFFFFF to 4294967295.
// Converted 0x0080 to 128.
// Converted 0x00E293 to 58003.
// Converted 0x00F9A2FF to 16360191.
// Converted 0x00FFFFFFFF to 4294967295.
Imports System.Globalization
Imports System.Numerics
Module Example
Public Sub Main()
Dim hexStrings() As String = { "80", "E293", "F9A2FF", "FFFFFFFF",
"080", "0E293", "0F9A2FF", "0FFFFFFFF",
"0080", "00E293", "00F9A2FF", "00FFFFFFFF" }
For Each hexString As String In hexStrings
Dim number As BigInteger = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier)
Console.WriteLine("Converted 0x{0} to {1}.", hexString, number)
Next
End Sub
End Module
' The example displays the following output:
' Converted 0x80 to -128.
' Converted 0xE293 to -7533.
' Converted 0xF9A2FF to -417025.
' Converted 0xFFFFFFFF to -1.
' Converted 0x080 to 128.
' Converted 0x0E293 to 58003.
' Converted 0x0F9A2FF to 16360191.
' Converted 0x0FFFFFFFF to 4294967295.
' Converted 0x0080 to 128.
' Converted 0x00E293 to 58003.
' Converted 0x00F9A2FF to 16360191.
' Converted 0x00FFFFFFFF to 4294967295.
Parametr value je analyzován pomocí informací o formátování v objektu NumberFormatInfo , který je inicializován pro aktuální systémovou jazykovou verzi. Chcete-li určit jazykovou verzi, jejíž informace formátování se používají pro operaci analýzy, zavolejte Parse(String, NumberStyles, IFormatProvider) přetížení.
Viz také
Platí pro
Parse(String)
- Zdroj:
- BigInteger.cs
- Zdroj:
- BigInteger.cs
- Zdroj:
- BigInteger.cs
- Zdroj:
- BigInteger.cs
Převede řetězcové vyjádření čísla na jeho BigInteger ekvivalent.
public:
static System::Numerics::BigInteger Parse(System::String ^ value);
public static System.Numerics.BigInteger Parse(string value);
static member Parse : string -> System.Numerics.BigInteger
Public Shared Function Parse (value As String) As BigInteger
Parametry
- value
- String
Řetězec obsahující číslo, které chcete převést.
Návraty
Hodnota, která je ekvivalentní číslu zadanému v parametru value .
Výjimky
value je null.
value není ve správném formátu.
Příklady
Následující příklad používá metodu Parse(String) k vytvoření instance dvou BigInteger objektů. Vynásobí každý objekt jiným číslem a potom zavolá metodu Compare k určení vztahu mezi těmito dvěma hodnotami.
string stringToParse = String.Empty;
try
{
// Parse two strings.
string string1, string2;
string1 = "12347534159895123";
string2 = "987654321357159852";
stringToParse = string1;
BigInteger number1 = BigInteger.Parse(stringToParse);
Console.WriteLine("Converted '{0}' to {1:N0}.", stringToParse, number1);
stringToParse = string2;
BigInteger number2 = BigInteger.Parse(stringToParse);
Console.WriteLine("Converted '{0}' to {1:N0}.", stringToParse, number2);
// Perform arithmetic operations on the two numbers.
number1 *= 3;
number2 *= 2;
// Compare the numbers.
int result = BigInteger.Compare(number1, number2);
switch (result)
{
case -1:
Console.WriteLine("{0} is greater than {1}.", number2, number1);
break;
case 0:
Console.WriteLine("{0} is equal to {1}.", number1, number2);
break;
case 1:
Console.WriteLine("{0} is greater than {1}.", number1, number2);
break;
}
}
catch (FormatException)
{
Console.WriteLine("Unable to parse {0}.", stringToParse);
}
// The example displays the following output:
// Converted '12347534159895123' to 12,347,534,159,895,123.
// Converted '987654321357159852' to 987,654,321,357,159,852.
// 1975308642714319704 is greater than 37042602479685369.
let mutable stringToParse = ""
try
// Parse two strings.
let string1 = "12347534159895123"
let string2 = "987654321357159852"
stringToParse <- string1
let number1 = BigInteger.Parse stringToParse
printfn $"Converted '{stringToParse}' to {number1:N0}."
stringToParse <- string2
let number2 = BigInteger.Parse stringToParse
printfn $"Converted '{stringToParse}' to {number2:N0}."
// Perform arithmetic operations on the two numbers.
let number1 = number1 * bigint 3
let number2 = number2 * bigint 2
// Compare the numbers.
let result = BigInteger.Compare(number1, number2)
match result with
| -1 -> printfn $"{number2:N0} is greater than {number1:N0}."
| 0 -> printfn $"{number1:N0} is equal to {number2:N0}."
| 1
| _ -> printfn $"{number1:N0} is greater than {number2:N0}."
with :? FormatException ->
printfn $"Unable to parse {stringToParse}."
// The example displays the following output:
// Converted '12347534159895123' to 12,347,534,159,895,123.
// Converted '987654321357159852' to 987,654,321,357,159,852.
// 1975308642714319704 is greater than 37042602479685369.
Dim stringToParse As String = String.Empty
Try
' Parse two strings.
Dim string1, string2 As String
string1 = "12347534159895123"
string2 = "987654321357159852"
stringToParse = string1
Dim number1 As BigInteger = BigInteger.Parse(stringToParse)
Console.WriteLine("Converted '{0}' to {1:N0}.", stringToParse, number1)
stringToParse = string2
Dim number2 As BigInteger = BigInteger.Parse(stringToParse)
Console.WriteLine("Converted '{0}' to {1:N0}.", stringToParse, number2)
' Perform arithmetic operations on the two numbers.
number1 *= 3
number2 *= 2
' Compare the numbers.
Select Case BigInteger.Compare(number1, number2)
Case -1
Console.WriteLine("{0} is greater than {1}.", number2, number1)
Case 0
Console.WriteLine("{0} is equal to {1}.", number1, number2)
Case 1
Console.WriteLine("{0} is greater than {1}.", number1, number2)
End Select
Catch e As FormatException
Console.WriteLine("Unable to parse {0}.", stringToParse)
End Try
' The example displays the following output:
' Converted '12347534159895123' to 12,347,534,159,895,123.
' Converted '987654321357159852' to 987,654,321,357,159,852.
' 1975308642714319704 is greater than 37042602479685369.
Poznámky
Parametr value by měl být řetězcovou reprezentací čísla v následujícím formátu.
[ws][znaménko]digits[ws]
Prvky v hranatých závorkách ([ a ]) jsou volitelné. Následující tabulka popisuje jednotlivé prvky.
| prvek | Description |
|---|---|
| Ws | Volitelné prázdné znaky. |
| znaménko | Volitelné znaménko. Platné znaky znaménka jsou určeny vlastnostmi NumberFormatInfo.NegativeSignNumberFormatInfo.PositiveSign aktuální jazykové verze. |
| Číslic | Posloupnost číslic v rozsahu od 0 do 9 Všechny počáteční nuly se ignorují. |
Poznámka:
Řetězec určený value parametrem je interpretován pomocí NumberStyles.Integer stylu. Nesmí obsahovat žádné oddělovače skupin ani oddělovač desetinných míst a nesmí obsahovat desetinnou část.
Parametr value je analyzován pomocí informací o formátování v objektu System.Globalization.NumberFormatInfo , který je inicializován pro aktuální systémovou jazykovou verzi. Další informace najdete na webu NumberFormatInfo.CurrentInfo. K analýze řetězce pomocí formátování informací o konkrétní jazykové verzi použijte metodu Parse(String, IFormatProvider) .
Důležité
Pokud metodu Parse použijete k zaokrouhlování řetězcové BigInteger reprezentace hodnoty, která byla výstupem ToString metody, měli byste použít BigInteger.ToString(String) metodu se specifikátorem formátu "R" k vygenerování řetězcové BigInteger reprezentace hodnoty. V opačném případě řetězcové BigInteger vyjádření zachovává pouze 50 nejvýznamnějších číslic původní hodnoty a data mohou být ztracena při použití Parse metody k obnovení BigInteger hodnoty.