[示例]C# single.tryParse将数字字符串转换为浮点数
作者:admin 时间:2022-5-27 10:0:11 浏览:前面曾介绍过C# TryParse怎样转换小数、16进制、千分位数字等字符串,不过那是用的int.tryParse
方法,并且转换小数字符串时会受到诸多条件限制,其实如果要把数字字符串转换成小数,可以用single.tryParse
方法来处理,更加简单。本文将详细介绍如何使用single.tryParse
将数字的字符串表示形式转换为其等效的单精度浮点数。
示例
在详细介绍 single.tryParse
方法之前,我们先来看看该方法的一个示例。
以下示例使用TryParse(String, Single)
方法将数值的字符串表示形式转换为Single
值。它假定 en-US 是当前的文化。
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
方法转换了多种形式的小数字符串。下面详细介绍该方法。
single.tryParse 方法
描述
将数字的字符串表示形式转换为其等效的单精度浮点数。返回值指示转换是成功还是失败。
语法
public static bool TryParse (string? s, out float result);
参数
s
String:要转换的数字的字符串。result
Single:当此方法返回时,如果转换成功,则包含与s
中包含的数字等效的单精度浮点数,如果转换失败,则返回零。如果s
参数为null或Empty、格式不正确或表示小于MinValue或大于MaxValue的数字,则转换失败。此参数未初始化传递;最初提供的任何值result
都将被覆盖。
返回
布尔值:true,如果s
转换成功;否则,false。
使用说明
在 .NET Core 3.0 及更高版本中,太大而无法表示的值会按照 IEEE 754 规范的要求四舍五入为PositiveInfinity
或NegativeInfinity
。在包括 .NET Framework 在内的早期版本中,解析太大而无法表示的值会导致失败。
此重载与Single.Parse(String)
方法的不同之处在于返回一个布尔值,该值指示解析操作是否成功,而不是返回解析后的数值。它消除了在s
无效且无法成功解析的事件中使用异常处理来测试FormatException的需要。
s
参数可以包含PositiveInfinitySymbol
、NegativeInfinitySymbol
、NaNSymbol
(字符串比较区分大小写)或以下形式的字符串:
[ws][sign][integral-digits,]integral-digits[.[fractional-digits]][e[sign]exponential-digits][ws]
方括号中的元素是可选的。下表描述了每个元素。
元素 | 描述 |
---|---|
ws | 一系列空白字符。 |
sign | 负号或正号符号。 |
integral-digits | 一系列从 0 到 9 的数字字符,用于指定数字的整数部分。如果有小数位,则可以不存在整数位。 |
, | 特定于区域性的组分隔符。 |
. | 特定于文化的小数点符号。 |
fractional-digits | 一系列从 0 到 9 的数字字符,用于指定数字的小数部分。 |
E | 大写或小写字符“e”,表示指数(科学)表示法。 |
exponential-digits | 一系列从 0 到 9 的数字字符,用于指定指数。 |
s
参数使用NumberStyles.Float
和NumberStyles.AllowThousands
标志的组合进行解释。这意味着允许使用空格和千位分隔符,但不允许使用货币符号。要显式定义可以出现在s
中的元素(例如货币符号、千位分隔符和空格),请使用TryParse(String, NumberStyles, IFormatProvider, Single)
方法重载。
使用为当前系统区域性初始化的NumberFormatInfo
对象中的格式信息解析s
参数。有关详细信息,请参阅NumberFormatInfo.CurrentInfo
。要使用某些其他指定区域性的格式信息解析字符串,请使用TryParse(String, NumberStyles, IFormatProvider, Single)
方法重载。
如果s
超出Single
数据类型的范围,则该方法在 .NET Framework 和 .NET Core 2.2 及更早版本上返回false。在 .NET Core 3.0 及更高版本上,如果s
小于Single.MinValue
则返回Single.NegativeInfinity
,如果s
大于Single.MaxValue
则返回Single.PositiveInfinity
。
如果在解析操作过程中在s
参数中遇到分隔符,并且适用的货币或数字小数和组分隔符相同,则解析操作假定分隔符是小数分隔符而不是组分隔符。有关分隔符的详细信息,请参阅CurrencyDecimalSeparator
、NumberDecimalSeparator
、CurrencyGroupSeparator
和NumberGroupSeparator
。
总结
本文通过具体示例,详细介绍了C# single.tryParse
将数字字符串转换为浮点数的方法,通过该文的学习,我们应了解使用single.tryParse
转换字符串时的一些规则,这在实际编程中相当重要,因为使用是否得当关系到你是否能得到预期的结果。
参考文章
- 站长推荐