技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營

贊助商

分類目錄

贊助商

最新文章

搜索

[示例]C# single.tryParse將數(shù)字字符串轉(zhuǎn)換為浮點(diǎn)數(shù)

作者:admin    時間:2022-5-27 10:0:11    瀏覽:

前面曾介紹過C# TryParse怎樣轉(zhuǎn)換小數(shù)、16進(jìn)制、千分位數(shù)字等字符串,不過那是用的int.tryParse方法,并且轉(zhuǎn)換小數(shù)字符串時會受到諸多條件限制,其實(shí)如果要把數(shù)字字符串轉(zhuǎn)換成小數(shù),可以用single.tryParse方法來處理,更加簡單。本文將詳細(xì)介紹如何使用single.tryParse將數(shù)字的字符串表示形式轉(zhuǎn)換為其等效的單精度浮點(diǎn)數(shù)。

示例

在詳細(xì)介紹 single.tryParse 方法之前,我們先來看看該方法的一個示例。

以下示例使用TryParse(String, Single)方法將數(shù)值的字符串表示形式轉(zhuǎn)換為Single值。它假定 en-US 是當(dāng)前的文化。

string value;
float number;

// Parse a floating-point value with a thousands separator.
value = "1,643.57";
if (Single.TryParse(value, out number))
   Console.WriteLine(number);
else
   Console.WriteLine("Unable to parse '{0}'.", value);

// Parse a floating-point value with a currency symbol and a
// thousands separator.
value = "$1,643.57";
if (Single.TryParse(value, out number))
   Console.WriteLine(number);
else
   Console.WriteLine("Unable to parse '{0}'.", value);

// Parse value in exponential notation.
value = "-1.643e6";
if (Single.TryParse(value, out number))
   Console.WriteLine(number);
else
   Console.WriteLine("Unable to parse '{0}'.", value);

// Parse a negative integer value.
value = "-168934617882109132";
if (Single.TryParse(value, out number))
   Console.WriteLine(number);
else
   Console.WriteLine("Unable to parse '{0}'.", value);
// The example displays the following output:
// 1643.57
// Unable to parse '$1,643.57'.
// -164300
// -1.689346E+17

評論

該示例中,使用 single.tryParse 方法轉(zhuǎn)換了多種形式的小數(shù)字符串。下面詳細(xì)介紹該方法。

single.tryParse 方法

描述

將數(shù)字的字符串表示形式轉(zhuǎn)換為其等效的單精度浮點(diǎn)數(shù)。返回值指示轉(zhuǎn)換是成功還是失敗。

語法

public static bool TryParse (string? s, out float result);

參數(shù)

  • s String:要轉(zhuǎn)換的數(shù)字的字符串。
  • result Single:當(dāng)此方法返回時,如果轉(zhuǎn)換成功,則包含與s中包含的數(shù)字等效的單精度浮點(diǎn)數(shù),如果轉(zhuǎn)換失敗,則返回零。如果s參數(shù)為nullEmpty、格式不正確或表示小于MinValue或大于MaxValue的數(shù)字,則轉(zhuǎn)換失敗。此參數(shù)未初始化傳遞;最初提供的任何值result都將被覆蓋。

返回

布爾值:true,如果s轉(zhuǎn)換成功;否則,false。

使用說明

在 .NET Core 3.0 及更高版本中,太大而無法表示的值會按照 IEEE 754 規(guī)范的要求四舍五入為PositiveInfinityNegativeInfinity 。在包括 .NET Framework 在內(nèi)的早期版本中,解析太大而無法表示的值會導(dǎo)致失敗。

此重載與Single.Parse(String)方法的不同之處在于返回一個布爾值,該值指示解析操作是否成功,而不是返回解析后的數(shù)值。它消除了在s無效且無法成功解析的事件中使用異常處理來測試FormatException的需要。

s參數(shù)可以包含PositiveInfinitySymbol、NegativeInfinitySymbol、NaNSymbol(字符串比較區(qū)分大小寫)或以下形式的字符串:

[ws][sign][integral-digits,]integral-digits[.[fractional-digits]][e[sign]exponential-digits][ws]

方括號中的元素是可選的。下表描述了每個元素。

元素 描述
ws 一系列空白字符。
sign 負(fù)號或正號符號。
integral-digits 一系列從 0 到 9 的數(shù)字字符,用于指定數(shù)字的整數(shù)部分。如果有小數(shù)位,則可以不存在整數(shù)位。
, 特定于區(qū)域性的組分隔符。
. 特定于文化的小數(shù)點(diǎn)符號。
fractional-digits 一系列從 0 到 9 的數(shù)字字符,用于指定數(shù)字的小數(shù)部分。
E 大寫或小寫字符“e”,表示指數(shù)(科學(xué))表示法。
exponential-digits 一系列從 0 到 9 的數(shù)字字符,用于指定指數(shù)。

s參數(shù)使用NumberStyles.FloatNumberStyles.AllowThousands標(biāo)志的組合進(jìn)行解釋。這意味著允許使用空格和千位分隔符,但不允許使用貨幣符號。要顯式定義可以出現(xiàn)在s中的元素(例如貨幣符號、千位分隔符和空格),請使用TryParse(String, NumberStyles, IFormatProvider, Single)方法重載。

使用為當(dāng)前系統(tǒng)區(qū)域性初始化的NumberFormatInfo對象中的格式信息解析s參數(shù)。有關(guān)詳細(xì)信息,請參閱NumberFormatInfo.CurrentInfo。要使用某些其他指定區(qū)域性的格式信息解析字符串,請使用TryParse(String, NumberStyles, IFormatProvider, Single)方法重載。

如果s超出Single數(shù)據(jù)類型的范圍,則該方法在 .NET Framework 和 .NET Core 2.2 及更早版本上返回false。在 .NET Core 3.0 及更高版本上,如果s小于Single.MinValue則返回Single.NegativeInfinity ,如果s大于Single.MaxValue則返回Single.PositiveInfinity

如果在解析操作過程中在s參數(shù)中遇到分隔符,并且適用的貨幣或數(shù)字小數(shù)和組分隔符相同,則解析操作假定分隔符是小數(shù)分隔符而不是組分隔符。有關(guān)分隔符的詳細(xì)信息,請參閱CurrencyDecimalSeparatorNumberDecimalSeparator、CurrencyGroupSeparatorNumberGroupSeparator

總結(jié)

本文通過具體示例,詳細(xì)介紹了C# single.tryParse將數(shù)字字符串轉(zhuǎn)換為浮點(diǎn)數(shù)的方法,通過該文的學(xué)習(xí),我們應(yīng)了解使用single.tryParse轉(zhuǎn)換字符串時的一些規(guī)則,這在實(shí)際編程中相當(dāng)重要,因?yàn)槭褂檬欠竦卯?dāng)關(guān)系到你是否能得到預(yù)期的結(jié)果。

參考文章

x
  • 站長推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */