Baca dalam bahasa Inggris

Bagikan melalui


BigInteger.Parse Metode

Definisi

Mengonversi representasi string dari angka menjadi BigInteger setara.

Overload

Parse(String)

Mengonversi representasi string dari angka menjadi BigInteger setara.

Parse(ReadOnlySpan<Char>, IFormatProvider)

Mengurai rentang karakter ke dalam nilai.

Parse(String, NumberStyles)

Mengonversi representasi string dari angka dalam gaya tertentu menjadi BigInteger setara.

Parse(String, IFormatProvider)

Mengonversi representasi string dari angka dalam format khusus budaya tertentu menjadi BigInteger setara.

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

Mengonversi representasi angka, yang terkandung dalam rentang karakter baca-saja yang ditentukan, dalam gaya yang ditentukan ke BigInteger yang setara.

Parse(String, NumberStyles, IFormatProvider)

Mengonversi representasi string angka dalam gaya tertentu dan format khusus budaya menjadi BigInteger setara.

Parse(String)

Sumber:
BigInteger.cs
Sumber:
BigInteger.cs
Sumber:
BigInteger.cs

Mengonversi representasi string dari angka menjadi BigInteger setara.

public static System.Numerics.BigInteger Parse (string value);

Parameter

value
String

String yang berisi angka yang akan dikonversi.

Mengembalikan

Nilai yang setara dengan angka yang ditentukan dalam value parameter .

Pengecualian

valueadalah null.

value tidak dalam format yang benar.

Contoh

Contoh berikut menggunakan Parse(String) metode untuk membuat instans dua BigInteger objek. Ini mengalikan setiap objek dengan nomor lain dan kemudian memanggil Compare metode untuk menentukan hubungan antara kedua nilai.

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.

Keterangan

Parameter value harus menjadi representasi string dari angka dalam formulir berikut.

[ws] [tanda]digits[ws]

Elemen dalam tanda kurung siku ([ dan ]) adalah opsional. Tabel berikut ini menjelaskan setiap elemen.

Elemen Deskripsi
Ws Spasi kosong opsional.
sign Tanda opsional. Karakter tanda yang valid ditentukan oleh NumberFormatInfo.NegativeSign properti dan NumberFormatInfo.PositiveSign dari budaya saat ini.
Digit Urutan digit mulai dari 0 hingga 9. Setiap nol di depan diabaikan.

Catatan

String yang ditentukan oleh value parameter ditafsirkan dengan menggunakan NumberStyles.Integer gaya . Ini tidak boleh berisi pemisah grup atau pemisah desimal, dan tidak dapat memiliki bagian desimal.

Parameter value diurai dengan menggunakan informasi pemformatan dalam objek yang diinisialisasi System.Globalization.NumberFormatInfo untuk budaya sistem saat ini. Untuk informasi selengkapnya, lihat NumberFormatInfo.CurrentInfo. Untuk mengurai string dengan menggunakan informasi pemformatan budaya tertentu, gunakan metode .Parse(String, IFormatProvider)

Penting

Jika Anda menggunakan Parse metode untuk melakukan round-trip representasi string dari BigInteger nilai yang dihasilkan oleh ToString metode , Anda harus menggunakan BigInteger.ToString(String) metode dengan penentu format "R" untuk menghasilkan representasi string nilai BigInteger . Jika tidak, representasi string dari BigInteger mempertahankan hanya 50 digit paling signifikan dari nilai asli, dan data mungkin hilang ketika Anda menggunakan Parse metode untuk memulihkan BigInteger nilai.

Lihat juga

Berlaku untuk

.NET 9 dan versi lainnya
Produk Versi
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Parse(ReadOnlySpan<Char>, IFormatProvider)

Sumber:
BigInteger.cs
Sumber:
BigInteger.cs
Sumber:
BigInteger.cs

Mengurai rentang karakter ke dalam nilai.

public static System.Numerics.BigInteger Parse (ReadOnlySpan<char> s, IFormatProvider? provider);

Parameter

s
ReadOnlySpan<Char>

Rentang karakter untuk diurai.

provider
IFormatProvider

Objek yang menyediakan informasi pemformatan khusus budaya tentang s.

Mengembalikan

Hasil penguraian s.

Penerapan

Berlaku untuk

.NET 9 dan versi lainnya
Produk Versi
.NET 7, 8, 9

Parse(String, NumberStyles)

Sumber:
BigInteger.cs
Sumber:
BigInteger.cs
Sumber:
BigInteger.cs

Mengonversi representasi string dari angka dalam gaya tertentu menjadi BigInteger setara.

public static System.Numerics.BigInteger Parse (string value, System.Globalization.NumberStyles style);

Parameter

value
String

String yang berisi angka yang akan dikonversi.

style
NumberStyles

Kombinasi bitwise dari nilai enumerasi yang menentukan format yang diizinkan dari value.

Mengembalikan

Nilai yang setara dengan angka yang ditentukan dalam value parameter .

Pengecualian

style bukan nilai NumberStyles .

-atau-

style AllowHexSpecifier menyertakan bendera atau HexNumber bersama dengan nilai lain.

valueadalah null.

value tidak mematuhi pola input yang ditentukan oleh NumberStyles.

Contoh

Contoh berikut mengilustrasikan panggilan ke Parse(String, NumberStyles) metode dengan beberapa nilai yang style mungkin untuk parameter . Ini menggambarkan cara menginterpretasikan string sebagai nilai heksadesimal, dan cara melarang spasi dan menandatangani simbol.

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.

Keterangan

Parameter style menentukan elemen gaya (seperti spasi putih, simbol tanda positif atau negatif, simbol pemisah grup, atau simbol titik desimal) yang diizinkan dalam value parameter agar operasi penguraian berhasil. styles harus berupa kombinasi bendera bit dari NumberStyles enumerasi. Parameter style membuat metode ini kelebihan beban berguna ketika value berisi representasi string dari nilai heksadesimal, ketika sistem angka (desimal atau heksadesimal) yang diwakili oleh value hanya diketahui pada durasi, atau ketika Anda ingin melarang spasi putih atau simbol tanda di value.

Bergantung pada nilai style, value parameter dapat mencakup elemen berikut:

[ws] [$][sign][digits,]digits[.fractional_digits][E[sign]exponential_digits][ws]

Jika style menyertakan NumberStyles.AllowHexSpecifier, value parameter mungkin berisi elemen berikut:

[ws] hexdigits[ws]

Elemen dalam tanda kurung siku ([ dan ]) adalah opsional. Tabel berikut ini menjelaskan setiap elemen.

Elemen Deskripsi
Ws Spasi kosong opsional. Spasi kosong dapat muncul di awal value jika style menyertakan NumberStyles.AllowLeadingWhite bendera, dan dapat muncul di akhir value jika style menyertakan NumberStyles.AllowTrailingWhite bendera.
$ Simbol mata uang khusus budaya. Posisinya dalam string didefinisikan oleh NumberFormatInfo.CurrencyNegativePattern properti dan NumberFormatInfo.CurrencyPositivePattern dari budaya saat ini. Simbol mata uang budaya saat ini dapat muncul jika valuestyle menyertakan NumberStyles.AllowCurrencySymbol bendera .
sign Tanda opsional. Tanda dapat muncul di awal value jika style menyertakan NumberStyles.AllowLeadingSign bendera, dan dapat muncul di akhir value jika style menyertakan NumberStyles.AllowTrailingSign bendera. Tanda kurung dapat digunakan value untuk menunjukkan nilai negatif jika style menyertakan NumberStyles.AllowParentheses bendera .
Digit

fractional_digits

exponential_digits
Urutan digit dari 0 hingga 9. Untuk fractional_digits, hanya digit 0 yang valid.
, Simbol pemisah grup khusus budaya. Pemisah grup budaya saat ini dapat muncul jika valuestyle menyertakan NumberStyles.AllowThousands bendera .
. Simbol titik desimal khusus budaya. Simbol titik desimal budaya saat ini dapat muncul jika valuestyle menyertakan NumberStyles.AllowDecimalPoint bendera . Hanya digit 0 yang dapat muncul sebagai digit pecahan agar operasi penguraian berhasil; jika fractional_digits menyertakan digit lain, akan FormatException dilemparkan.
E Karakter "e" atau "E", yang menunjukkan bahwa nilai diwakili dalam notasi eksponensial (ilmiah). Parameter value dapat mewakili angka dalam notasi eksponensial jika style menyertakan NumberStyles.AllowExponent bendera .
hexdigits Urutan digit heksadesimal dari 0 hingga f, atau 0 hingga F.

Catatan

Setiap karakter NUL yang mengakhiri (U+0000) di s diabaikan oleh operasi penguraian, terlepas dari style nilai argumen.

String dengan digit saja (yang sesuai dengan NumberStyles.None gaya) selalu berhasil diurai. Sebagian besar elemen kontrol anggota yang tersisa NumberStyles yang mungkin ada, tetapi tidak diharuskan ada, dalam string input. Tabel berikut menunjukkan bagaimana anggota individu NumberStyles memengaruhi elemen yang mungkin ada di value.

NumberStyles nilai Elemen yang diizinkan selain value digit
None Elemen digit saja.
AllowDecimalPoint Elemen titik desimal (.) dan digit pecahan .
AllowExponent Karakter "e" atau "E", yang menunjukkan notasi eksponensial, bersama dengan exponential_digits.
AllowLeadingWhite Elemen ws di awal value.
AllowTrailingWhite Elemen ws di akhir value.
AllowLeadingSign Elemen tanda di awal value.
AllowTrailingSign Elemen tanda di akhir value.
AllowParentheses Elemen tanda tangan dalam bentuk tanda kurung yang menyertakan nilai numerik.
AllowThousands Elemen pemisah grup (,).
AllowCurrencySymbol Elemen mata uang ($).
Currency Semua elemen. Namun, value tidak dapat mewakili angka heksadesimal atau angka dalam notasi eksponensial.
Float Elemen ws di awal atau akhir , valuetanda di awal value, dan simbol titik desimal (.). Parameter value juga dapat menggunakan notasi eksponensial.
Number Elemen ws, sign, pemisah grup (,), dan titik desimal (.).
Any Semua elemen. Namun, value tidak dapat mewakili angka heksadesimal.

Penting

Jika Anda menggunakan Parse metode untuk melakukan round-trip representasi string dari BigInteger nilai yang dihasilkan oleh ToString metode , Anda harus menggunakan BigInteger.ToString(String) metode dengan penentu format "R" untuk menghasilkan representasi string dari BigInteger nilai. Jika tidak, representasi string dari BigInteger mempertahankan hanya 50 digit paling signifikan dari nilai asli, dan data mungkin hilang ketika Anda menggunakan Parse metode untuk memulihkan BigInteger nilai.

Tidak seperti nilai lain NumberStyles , yang memungkinkan, tetapi tidak memerlukan, keberadaan elemen gaya tertentu dalam value, NumberStyles.AllowHexSpecifier nilai gaya berarti bahwa karakter numerik individu di selalu ditafsirkan value sebagai karakter heksadesimal. Karakter heksadesimal yang valid adalah 0-9, A-F, dan a-f. Satu-satunya bendera lain yang dapat dikombinasikan dengan style parameter adalah NumberStyles.AllowLeadingWhite dan NumberStyles.AllowTrailingWhite. (Enumerasi NumberStyles mencakup gaya angka komposit, HexNumber, yang mencakup kedua bendera spasi putih.)

Catatan

Jika value merupakan representasi string dari angka heksadesimal, itu tidak dapat didahului oleh dekorasi apa pun (seperti 0x atau &h) yang membedakannya sebagai angka heksadesimal. Ini menyebabkan konversi gagal.

Jika value adalah string heksadesimal, Parse(String, NumberStyles) metode menafsirkan value sebagai angka negatif yang disimpan dengan menggunakan representasi pelengkap dua jika dua digit heksadesimal pertamanya lebih besar dari atau sama dengan 0x80. Dengan kata lain, metode menginterpretasikan bit urutan tertinggi dari byte pertama sebagai value bit tanda. Untuk memastikan bahwa string heksadesimal ditafsirkan dengan benar sebagai angka positif, digit pertama di value harus memiliki nilai nol. Misalnya, metode menafsirkan 0x80 sebagai nilai negatif, tetapi menafsirkan baik 0x080 atau 0x0080 sebagai nilai positif. Contoh berikut mengilustrasikan perbedaan antara string heksadesimal yang mewakili nilai negatif dan positif.

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.

Parameter value diurai dengan menggunakan informasi pemformatan dalam objek yang diinisialisasi NumberFormatInfo untuk budaya sistem saat ini. Untuk menentukan budaya yang informasi pemformatannya digunakan untuk operasi penguraian, panggil Parse(String, NumberStyles, IFormatProvider) kelebihan beban.

Lihat juga

Berlaku untuk

.NET 9 dan versi lainnya
Produk Versi
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Parse(String, IFormatProvider)

Sumber:
BigInteger.cs
Sumber:
BigInteger.cs
Sumber:
BigInteger.cs

Mengonversi representasi string dari angka dalam format khusus budaya tertentu menjadi BigInteger setara.

public static System.Numerics.BigInteger Parse (string value, IFormatProvider provider);
public static System.Numerics.BigInteger Parse (string value, IFormatProvider? provider);

Parameter

value
String

String yang berisi angka yang akan dikonversi.

provider
IFormatProvider

Objek yang menyediakan informasi pemformatan khusus budaya tentang value.

Mengembalikan

Nilai yang setara dengan angka yang ditentukan dalam value parameter .

Penerapan

Pengecualian

valueadalah null.

value tidak dalam format yang benar.

Contoh

Contoh berikut menunjukkan dua cara untuk menentukan tilde (~) sebagai tanda negatif untuk nilai pemformatan BigInteger . Perhatikan bahwa untuk menampilkan BigInteger nilai dalam format yang sama dengan string asli, kode Anda harus memanggil BigInteger.ToString(IFormatProvider) metode dan meneruskannya objek NumberFormatInfo yang menyediakan informasi pemformatan.

Contoh pertama mendefinisikan kelas yang mengimplementasikan IFormatProvider dan menggunakan GetFormat metode untuk mengembalikan NumberFormatInfo objek yang menyediakan informasi pemformatan.

public class BigIntegerFormatProvider : IFormatProvider
{
   public object GetFormat(Type formatType)
   {
      if (formatType == typeof(NumberFormatInfo))
      {
         NumberFormatInfo numberFormat = new NumberFormatInfo();
         numberFormat.NegativeSign = "~";
         return numberFormat;
      }
      else
      {
         return null;
      }
   }
}

Objek BigInteger kemudian dapat dibuat dengan kode berikut:

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);

Contoh kedua lebih mudah. Ini meneruskan NumberFormatInfo objek yang menyediakan informasi pemformatan ke provider parameter .

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);

Keterangan

Parameter value harus menjadi representasi string dari angka dalam formulir berikut:

[ws] [tanda tangan] digits[ws]

Elemen dalam tanda kurung siku ([ dan ]) adalah opsional. Tabel berikut ini menjelaskan setiap elemen.

Elemen Deskripsi
Ws Spasi kosong opsional.
sign Tanda opsional. Karakter tanda yang valid ditentukan oleh NumberFormatInfo.NegativeSign properti dan NumberFormatInfo.PositiveSign objek NumberFormatInfo yang dikembalikan oleh provider metode objek GetFormat .
Digit Urutan digit berkisar antara 0 hingga 9. Setiap nol di depan diabaikan.

Catatan

String yang ditentukan oleh value parameter ditafsirkan menggunakan NumberStyles.Integer gaya . Ini tidak boleh berisi pemisah grup atau pemisah desimal, dan tidak dapat memiliki bagian desimal.

Penting

Jika Anda menggunakan Parse metode untuk melakukan round-trip representasi string dari BigInteger nilai yang dihasilkan oleh ToString metode , Anda harus menggunakan BigInteger.ToString(String) metode dengan penentu format "R" untuk menghasilkan representasi string dari BigInteger nilai. Jika tidak, representasi string dari BigInteger mempertahankan hanya 50 digit paling signifikan dari nilai asli, dan data mungkin hilang ketika Anda menggunakan Parse metode untuk memulihkan BigInteger nilai.

Parameter provider adalah IFormatProvider implementasi yang metodenya GetFormat mengembalikan NumberFormatInfo objek yang menyediakan informasi pemformatan khusus budaya. Parse(String, IFormatProvider) Ketika metode dipanggil, metode ini memanggil provider metode parameter GetFormat dan meneruskannya objek Type yang mewakili NumberFormatInfo jenis . Metode GetFormat ini kemudian mengembalikan NumberFormatInfo objek yang menyediakan informasi tentang format value parameter. Ada tiga cara untuk menggunakan provider parameter untuk menyediakan informasi pemformatan kustom ke operasi penguraian:

  • Anda dapat meneruskan CultureInfo objek yang mewakili budaya yang memasok informasi pemformatan. Metodenya GetFormat mengembalikan objek yang menyediakan informasi pemformatan numerik untuk budaya tersebut NumberFormatInfo .

  • Anda dapat meneruskan objek aktual NumberFormatInfo yang menyediakan informasi pemformatan numerik. (Implementasinya GetFormat hanya mengembalikan dirinya sendiri.)

  • Anda dapat meneruskan objek kustom yang mengimplementasikan IFormatProvider. Metodenya GetFormat membuat instans NumberFormatInfo dan mengembalikan objek yang menyediakan informasi pemformatan.

Jika provider adalah null, pemformatan value ditafsirkan berdasarkan NumberFormatInfo objek budaya saat ini.

Lihat juga

Berlaku untuk

.NET 9 dan versi lainnya
Produk Versi
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

Sumber:
BigInteger.cs
Sumber:
BigInteger.cs
Sumber:
BigInteger.cs

Mengonversi representasi angka, yang terkandung dalam rentang karakter baca-saja yang ditentukan, dalam gaya yang ditentukan ke BigInteger yang setara.

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);

Parameter

value
ReadOnlySpan<Char>

Rentang karakter baca-saja yang berisi angka yang akan dikonversi.

style
NumberStyles

Kombinasi bitwise dari nilai enumerasi yang menentukan format yang diizinkan dari value.

provider
IFormatProvider

Objek yang menyediakan informasi pemformatan khusus budaya tentang value.

Mengembalikan

Nilai yang setara dengan angka yang ditentukan dalam value parameter .

Penerapan

Pengecualian

style bukan nilai NumberStyles .

-atau-

style AllowHexSpecifier menyertakan bendera atau HexNumber bersama dengan nilai lain.

valueadalah null.

value tidak mematuhi pola input yang ditentukan oleh style.

Keterangan

Parameter style mendefinisikan elemen gaya (seperti spasi putih, simbol tanda positif atau negatif, simbol pemisah grup, atau simbol titik desimal) yang diizinkan dalam value parameter agar operasi penguraian berhasil. styles harus berupa kombinasi bendera bit dari NumberStyles enumerasi. Parameter style membuat metode ini kelebihan beban berguna ketika value berisi representasi nilai heksadesimal, ketika sistem angka (desimal atau heksadesimal) yang diwakili oleh value hanya diketahui pada waktu proses, atau ketika Anda ingin melarang spasi putih atau simbol tanda di value.

Bergantung pada nilai style, value parameter dapat mencakup elemen berikut:

[ws] [$][sign][digits,]digits[.fractional_digits][E[sign]exponential_digits][ws]

Jika style menyertakan NumberStyles.AllowHexSpecifier, value parameter dapat menyertakan elemen berikut:

[ws] hexdigits[ws]

Elemen dalam tanda kurung siku ([ dan ]) adalah opsional. Tabel berikut ini menjelaskan setiap elemen.

Elemen Deskripsi
Ws Spasi kosong opsional. Spasi kosong dapat muncul di awal value jika style menyertakan NumberStyles.AllowLeadingWhite bendera, dan dapat muncul di akhir value jika style menyertakan NumberStyles.AllowTrailingWhite bendera.
$ Simbol mata uang khusus budaya. Posisinya di didefinisikan oleh NumberFormatInfo.CurrencyNegativePattern sifat dan NumberFormatInfo.CurrencyPositivePattern dari budaya yang ditunjukkan value oleh provider parameter . Simbol mata uang budaya saat ini dapat muncul jika valuestyle menyertakan NumberStyles.AllowCurrencySymbol bendera .
sign Tanda opsional. Tanda dapat muncul di awal value jika style menyertakan NumberStyles.AllowLeadingSign bendera, dan dapat muncul di akhir value jika style menyertakan NumberStyles.AllowTrailingSign bendera. Tanda kurung dapat digunakan value untuk menunjukkan nilai negatif jika style menyertakan NumberStyles.AllowParentheses bendera .
Digit

fractional_digits

exponential_digits
Urutan digit dari 0 hingga 9. Untuk fractional_digits, hanya digit 0 yang valid.
, Simbol pemisah grup khusus budaya. Simbol pemisah grup dari budaya yang ditentukan oleh provider dapat muncul jika valuestyle menyertakan NumberStyles.AllowThousands bendera .
. Simbol titik desimal khusus budaya. Simbol titik desimal dari budaya yang ditunjuk oleh provider dapat muncul jika stylevalue menyertakan NumberStyles.AllowDecimalPoint bendera . Hanya digit 0 yang dapat muncul sebagai digit pecahan agar operasi penguraian berhasil; jika fractional_digits menyertakan digit lain, akan FormatException dilemparkan.
E Karakter "e" atau "E", yang menunjukkan bahwa nilai diwakili dalam notasi eksponensial (ilmiah). Parameter value dapat mewakili angka dalam notasi eksponensial jika style menyertakan NumberStyles.AllowExponent bendera .
hexdigits Urutan digit heksadesimal dari 0 hingga f, atau 0 hingga F.

Catatan

Setiap karakter NUL yang mengakhiri (U+0000) di s diabaikan oleh operasi penguraian, terlepas dari style nilai argumen.

Dengan value digit saja (yang sesuai dengan NumberStyles.None gaya) selalu berhasil diurai. Sebagian besar anggota yang tersisa NumberStyles mengontrol elemen yang mungkin ada, tetapi tidak diharuskan ada, di value. Tabel berikut menunjukkan bagaimana anggota individu NumberStyles memengaruhi elemen yang mungkin ada di value.

Nilai NumberStyles Elemen yang diizinkan dalam nilai selain digit
None Elemen digit saja.
AllowDecimalPoint Elemen titik desimal (.) dan fractional-digits .
AllowExponent Karakter "e" atau "E", yang menunjukkan notasi eksponensial. bersama dengan exponential_digits.
AllowLeadingWhite Elemen ws di awal value.
AllowTrailingWhite Elemen ws di akhir value.
AllowLeadingSign Elemen tanda di awal value.
AllowTrailingSign Elemen tanda di akhir value.
AllowParentheses Elemen tanda dalam bentuk tanda kurung yang menyertakan nilai numerik.
AllowThousands Elemen pemisah grup (,).
AllowCurrencySymbol Elemen mata uang ($).
Currency Semua elemen. Namun, value tidak dapat mewakili angka heksadesimal atau angka dalam notasi eksponensial.
Float Elemen ws di awal atau akhir , valuetanda di awal value, dan simbol titik desimal (.). Parameter value juga dapat menggunakan notasi eksponensial.
Number Elemen ws, sign, pemisah grup (,), dan desimal (.).
Any Semua elemen. Namun, value tidak dapat mewakili angka heksadesimal.

Tidak seperti nilai lain NumberStyles , yang memungkinkan tetapi tidak memerlukan kehadiran elemen gaya tertentu dalam value, NumberStyles.AllowHexSpecifier nilai gaya berarti bahwa karakter numerik individu di selalu ditafsirkan value sebagai karakter heksadesimal. Karakter heksadesimal yang valid adalah 0-9, A-F, dan a-f. Satu-satunya bendera lain yang dapat dikombinasikan dengan style parameter adalah NumberStyles.AllowLeadingWhite dan NumberStyles.AllowTrailingWhite. (Enumerasi NumberStyles mencakup gaya angka komposit, HexNumber, yang mencakup kedua bendera spasi putih.)

Parameter provider adalah IFormatProvider implementasi. Metodenya GetFormat mengembalikan NumberFormatInfo objek yang menyediakan informasi khusus budaya tentang format value. Biasanya, provider dapat berupa salah satu hal berikut:

  • Objek CultureInfo yang mewakili budaya yang menyediakan informasi pemformatan numerik. Metodenya GetFormat mengembalikan NumberFormatInfo objek yang menyediakan informasi pemformatan numerik.

  • Objek NumberFormatInfo yang menyediakan informasi pemformatan. (Implementasinya GetFormat hanya mengembalikan dirinya sendiri.)

  • Objek kustom yang mengimplementasikan IFormatProvider dan menggunakan metode untuk membuat instans GetFormat dan mengembalikan NumberFormatInfo objek yang menyediakan informasi pemformatan.

Jika provider adalah null, NumberFormatInfo objek untuk budaya saat ini digunakan.

Lihat juga

Berlaku untuk

.NET 9 dan versi lainnya
Produk Versi
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

Parse(String, NumberStyles, IFormatProvider)

Sumber:
BigInteger.cs
Sumber:
BigInteger.cs
Sumber:
BigInteger.cs

Mengonversi representasi string angka dalam gaya tertentu dan format khusus budaya menjadi BigInteger setara.

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);

Parameter

value
String

String yang berisi angka yang akan dikonversi.

style
NumberStyles

Kombinasi bitwise dari nilai enumerasi yang menentukan format yang diizinkan dari value.

provider
IFormatProvider

Objek yang menyediakan informasi pemformatan khusus budaya tentang value.

Mengembalikan

Nilai yang setara dengan angka yang ditentukan dalam value parameter .

Penerapan

Pengecualian

style bukan nilai NumberStyles .

-atau-

style AllowHexSpecifier menyertakan bendera atau HexNumber bersama dengan nilai lain.

valueadalah null.

value tidak mematuhi pola input yang ditentukan oleh style.

Contoh

Contoh berikut melakukan beberapa panggilan ke Parse(String, NumberStyles, IFormatProvider) metode menggunakan berbagai kombinasi nilai untuk style parameter dan provider .

// 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.

Sejumlah panggilan individu ke Parse(String, NumberStyles, IFormatProvider) metode meneruskan instans kelas berikut BigIntegerFormatProvider , yang mendefinisikan tilde (~) sebagai tanda negatif.

public class BigIntegerFormatProvider : IFormatProvider
{
   public object GetFormat(Type formatType)
   {
      if (formatType == typeof(NumberFormatInfo))
      {
         NumberFormatInfo numberFormat = new NumberFormatInfo();
         numberFormat.NegativeSign = "~";
         return numberFormat;
      }
      else
      {
         return null;
      }
   }
}

Keterangan

Parameter style menentukan elemen gaya (seperti spasi putih, simbol tanda positif atau negatif, simbol pemisah grup, atau simbol titik desimal) yang diizinkan dalam value parameter agar operasi penguraian berhasil. styles harus berupa kombinasi bendera bit dari NumberStyles enumerasi. Parameter style membuat metode ini kelebihan beban berguna ketika value berisi representasi string dari nilai heksadesimal, ketika sistem angka (desimal atau heksadesimal) yang diwakili oleh value hanya diketahui pada durasi, atau ketika Anda ingin melarang spasi putih atau simbol tanda di value.

Bergantung pada nilai style, value parameter dapat mencakup elemen berikut:

[ws] [$][sign][digits,]digits[.fractional_digits][E[sign]exponential_digits][ws]

Jika style menyertakan NumberStyles.AllowHexSpecifier, value parameter dapat menyertakan elemen berikut:

[ws] hexdigits[ws]

Elemen dalam tanda kurung siku ([ dan ]) adalah opsional. Tabel berikut ini menjelaskan setiap elemen.

Elemen Deskripsi
Ws Spasi kosong opsional. Spasi kosong dapat muncul di awal value jika style menyertakan NumberStyles.AllowLeadingWhite bendera, dan dapat muncul di akhir value jika style menyertakan NumberStyles.AllowTrailingWhite bendera.
$ Simbol mata uang khusus budaya. Posisinya dalam string didefinisikan oleh NumberFormatInfo.CurrencyNegativePattern properti dan NumberFormatInfo.CurrencyPositivePattern budaya yang ditunjukkan oleh provider parameter . Simbol mata uang budaya saat ini dapat muncul jika valuestyle menyertakan NumberStyles.AllowCurrencySymbol bendera .
sign Tanda opsional. Tanda dapat muncul di awal value jika style menyertakan NumberStyles.AllowLeadingSign bendera, dan dapat muncul di akhir value jika style menyertakan NumberStyles.AllowTrailingSign bendera. Tanda kurung dapat digunakan value untuk menunjukkan nilai negatif jika style menyertakan NumberStyles.AllowParentheses bendera .
Digit

fractional_digits

exponential_digits
Urutan digit dari 0 hingga 9. Untuk fractional_digits, hanya digit 0 yang valid.
, Simbol pemisah grup khusus budaya. Simbol pemisah grup dari budaya yang ditentukan oleh provider dapat muncul jika valuestyle menyertakan NumberStyles.AllowThousands bendera .
. Simbol titik desimal khusus budaya. Simbol titik desimal dari budaya yang ditunjuk oleh provider dapat muncul jika stylevalue menyertakan NumberStyles.AllowDecimalPoint bendera . Hanya digit 0 yang dapat muncul sebagai digit pecahan agar operasi penguraian berhasil; jika fractional_digits menyertakan digit lain, akan FormatException dilemparkan.
E Karakter "e" atau "E", yang menunjukkan bahwa nilai diwakili dalam notasi eksponensial (ilmiah). Parameter value dapat mewakili angka dalam notasi eksponensial jika style menyertakan NumberStyles.AllowExponent bendera .
hexdigits Urutan digit heksadesimal dari 0 hingga f, atau 0 hingga F.

Catatan

Setiap karakter NUL yang mengakhiri (U+0000) di s diabaikan oleh operasi penguraian, terlepas dari style nilai argumen.

String dengan digit saja (yang sesuai dengan NumberStyles.None gaya) selalu berhasil diurai. Sebagian besar elemen kontrol anggota yang tersisa NumberStyles yang mungkin ada, tetapi tidak diharuskan ada, dalam string input. Tabel berikut menunjukkan bagaimana anggota individu NumberStyles memengaruhi elemen yang mungkin ada di value.

Nilai NumberStyles Elemen yang diizinkan dalam nilai selain digit
None Elemen digit saja.
AllowDecimalPoint Elemen titik desimal (.) dan fractional-digits .
AllowExponent Karakter "e" atau "E", yang menunjukkan notasi eksponensial. bersama dengan exponential_digits.
AllowLeadingWhite Elemen ws di awal value.
AllowTrailingWhite Elemen ws di akhir value.
AllowLeadingSign Elemen tanda di awal value.
AllowTrailingSign Elemen tanda di akhir value.
AllowParentheses Elemen tanda dalam bentuk tanda kurung yang menyertakan nilai numerik.
AllowThousands Elemen pemisah grup (,).
AllowCurrencySymbol Elemen mata uang ($).
Currency Semua elemen. Namun, value tidak dapat mewakili angka heksadesimal atau angka dalam notasi eksponensial.
Float Elemen ws di awal atau akhir , valuetanda di awal value, dan simbol titik desimal (.). Parameter value juga dapat menggunakan notasi eksponensial.
Number Elemen ws, sign, pemisah grup (,), dan desimal (.).
Any Semua elemen. Namun, value tidak dapat mewakili angka heksadesimal.

Penting

Jika Anda menggunakan Parse metode untuk melakukan round-trip representasi string dari BigInteger nilai yang dihasilkan oleh ToString metode , Anda harus menggunakan BigInteger.ToString(String) metode dengan penentu format "R" untuk menghasilkan representasi string nilai BigInteger . Jika tidak, representasi string dari BigInteger mempertahankan hanya 50 digit paling signifikan dari nilai asli, dan data mungkin hilang ketika Anda menggunakan Parse metode untuk memulihkan BigInteger nilai.

Tidak seperti nilai lain NumberStyles , yang memungkinkan tetapi tidak memerlukan kehadiran elemen gaya tertentu dalam value, NumberStyles.AllowHexSpecifier nilai gaya berarti bahwa karakter numerik individu di selalu ditafsirkan value sebagai karakter heksadesimal. Karakter heksadesimal yang valid adalah 0-9, A-F, dan a-f. Satu-satunya bendera lain yang dapat dikombinasikan dengan style parameter adalah NumberStyles.AllowLeadingWhite dan NumberStyles.AllowTrailingWhite. (Enumerasi NumberStyles mencakup gaya angka komposit, HexNumber, yang mencakup kedua bendera spasi putih.)

Catatan

Jika value merupakan representasi string dari angka heksadesimal, itu tidak dapat didahului oleh dekorasi apa pun (seperti 0x atau &h) yang membedakannya sebagai angka heksadesimal. Hal ini menyebabkan konversi gagal.

Jika value adalah string heksadesimal, Parse(String, NumberStyles) metode menafsirkan value sebagai angka negatif yang disimpan dengan menggunakan representasi pelengkap dua jika dua digit heksadesimal pertamanya lebih besar dari atau sama dengan 0x80. Dengan kata lain, metode ini menafsirkan bit urutan tertinggi dari byte pertama sebagai value bit tanda. Untuk memastikan bahwa string heksadesimal ditafsirkan dengan benar sebagai angka positif, digit pertama di value harus memiliki nilai nol. Misalnya, metode ini menafsirkan 0x80 sebagai nilai negatif, tetapi menafsirkan salah satu 0x080 atau 0x0080 sebagai nilai positif. Contoh berikut mengilustrasikan perbedaan antara string heksadesimal yang mewakili nilai negatif dan positif.

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.

Parameter provider adalah IFormatProvider implementasi. Metodenya GetFormat mengembalikan NumberFormatInfo objek yang menyediakan informasi khusus budaya tentang format value. Biasanya, provider dapat berupa salah satu hal berikut:

  • Objek CultureInfo yang mewakili budaya yang menyediakan informasi pemformatan numerik. Metodenya GetFormat mengembalikan NumberFormatInfo objek yang menyediakan informasi pemformatan numerik.

  • Objek NumberFormatInfo yang menyediakan informasi pemformatan. (Implementasinya GetFormat hanya mengembalikan dirinya sendiri.)

  • Objek kustom yang mengimplementasikan IFormatProvider dan menggunakan metode untuk membuat instans GetFormat dan mengembalikan NumberFormatInfo objek yang menyediakan informasi pemformatan.

Jika provider adalah null, NumberFormatInfo objek untuk budaya saat ini digunakan.

Lihat juga

Berlaku untuk

.NET 9 dan versi lainnya
Produk Versi
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0