技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

[示例]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参数为nullEmpty、格式不正确或表示小于MinValue或大于MaxValue的数字,则转换失败。此参数未初始化传递;最初提供的任何值result都将被覆盖。

返回

布尔值:true,如果s转换成功;否则,false

使用说明

在 .NET Core 3.0 及更高版本中,太大而无法表示的值会按照 IEEE 754 规范的要求四舍五入为PositiveInfinityNegativeInfinity 。在包括 .NET Framework 在内的早期版本中,解析太大而无法表示的值会导致失败。

此重载与Single.Parse(String)方法的不同之处在于返回一个布尔值,该值指示解析操作是否成功,而不是返回解析后的数值。它消除了在s无效且无法成功解析的事件中使用异常处理来测试FormatException的需要。

s参数可以包含PositiveInfinitySymbolNegativeInfinitySymbolNaNSymbol(字符串比较区分大小写)或以下形式的字符串:

[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.FloatNumberStyles.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参数中遇到分隔符,并且适用的货币或数字小数和组分隔符相同,则解析操作假定分隔符是小数分隔符而不是组分隔符。有关分隔符的详细信息,请参阅CurrencyDecimalSeparatorNumberDecimalSeparatorCurrencyGroupSeparatorNumberGroupSeparator

总结

本文通过具体示例,详细介绍了C# single.tryParse将数字字符串转换为浮点数的方法,通过该文的学习,我们应了解使用single.tryParse转换字符串时的一些规则,这在实际编程中相当重要,因为使用是否得当关系到你是否能得到预期的结果。

参考文章

x
  • 站长推荐
/* 左侧显示文章内容目录 */