Single 结构
2013/3/11
表示单精度浮点数。
程序集: mscorlib(位于 mscorlib.dll 中)
Single 类型公开以下成员。
| 名称 | 说明 | |
|---|---|---|
![]() | CompareTo(Object) | 将此实例与指定对象进行比较,并返回一个整数,该整数指示此实例的值是大于、小于还是等于指定对象的值。 |
![]() | CompareTo(Single) | 将此实例与指定的单精度浮点数进行比较,并返回一个整数,该整数指示此实例的值是大于、小于还是等于指定的单精度浮点数的值。 |
![]() | Equals(Object) | 返回一个值,该值指示此实例是否等于指定的对象。 (重写 ValueType.Equals(Object)。) |
![]() | Equals(Single) | 返回一个值,该值指示此实例和指定的 Single 对象是否表示相同的值。 |
![]() | Finalize | 允许 Object 在垃圾回收器回收该对象之前尝试释放资源并执行其他清理操作。 (从 Object 继承。) |
![]() | GetHashCode | 返回此实例的哈希代码。 (重写 ValueType.GetHashCode()。) |
![]() | GetType | 获取当前实例的 Type。 (从 Object 继承。) |
![]() | GetTypeCode | 返回值类型 Single 的 TypeCode。 |
![]() ![]() | IsInfinity | 返回一个值,该值指示指定数字是计算为负无穷大还是正无穷大。 |
![]() ![]() | IsNaN | 返回一个值,该值指示指定数字是否计算为非数字 (NaN)。 |
![]() ![]() | IsNegativeInfinity | 返回一个值,该值指示指定数字是否计算为负无穷大。 |
![]() ![]() | IsPositiveInfinity | 返回一个值,该值指示指定数字是否计算为正无穷大。 |
![]() | MemberwiseClone | 创建当前 Object 的浅表副本。 (从 Object 继承。) |
![]() ![]() | Parse(String) | 将数字的字符串表示形式转换为它的等效单精度浮点数字。 |
![]() ![]() | Parse(String, NumberStyles) | 将具有指定样式的数字的字符串表示形式转换为它的等效单精度浮点数字。 |
![]() ![]() | Parse(String, IFormatProvider) | 将具有指定区域性特定格式的数字的字符串表示形式转换为它的等效单精度浮点数字。 |
![]() ![]() | Parse(String, NumberStyles, IFormatProvider) | 将具有指定样式和区域性特定格式的数字的字符串表示形式转换为它的等效单精度浮点数字。 |
![]() | ToString() | 将此实例的数值转换为其等效的字符串表示形式。 (重写 ValueType.ToString()。) |
![]() | ToString(IFormatProvider) | 使用指定的区域性特定格式设置信息,将此实例的数值转换为它的等效字符串表示形式。 |
![]() | ToString(String) | 使用指定的格式,将此实例的数值转换为它的等效字符串表示形式。 |
![]() | ToString(String, IFormatProvider) | 使用指定的格式和区域性特定格式设置信息,将此实例的数值转换为它的等效字符串表示形式。 |
![]() ![]() | TryParse(String, Single) | 将数字的字符串表示形式转换为它的等效单精度浮点数字。一个指示转换是否成功的返回代码。 |
![]() ![]() | TryParse(String, NumberStyles, IFormatProvider, Single) | 将具有指定样式和区域性特定格式的数字的字符串表示形式转换为它的等效单精度浮点数字。一个指示转换是否成功的返回代码。 |
| 名称 | 说明 | |
|---|---|---|
![]() ![]() | Equality | 返回一个值,该值指示两个指定的 Single 值是否相等。 |
![]() ![]() | GreaterThan | 返回一个值,该值指示指定的 Single 值是否大于另一个指定的 Single 值。 |
![]() ![]() | GreaterThanOrEqual | 返回一个值,该值指示指定的 Single 值是否大于或等于另一个指定的 Single 值。 |
![]() ![]() | Inequality | 返回一个值,该值指示两个指定的 Single 值是否不相等。 |
![]() ![]() | LessThan | 返回一个值,该值指示指定的 Single 值是否小于另一个指定的 Single 值。 |
![]() ![]() | LessThanOrEqual | 返回一个值,该值指示指定的 Single 值是否小于或等于另一个指定的 Single 值。 |
| 名称 | 说明 | |
|---|---|---|
![]() ![]() | Epsilon | 表示大于零的最小正 Single 值。此字段为常量。 |
![]() ![]() | MaxValue | 表示 Single 的最大可能值。此字段为常量。 |
![]() ![]() | MinValue | 表示 Single 的最小可能值。此字段为常量。 |
![]() ![]() | NaN | 表示非数字 (NaN)。此字段为常量。 |
![]() ![]() | NegativeInfinity | 表示负无穷。此字段为常量。 |
![]() ![]() | PositiveInfinity | 表示正无穷。此字段为常量。 |
| 名称 | 说明 | |
|---|---|---|
![]() ![]() | IConvertible.ToBoolean | 基础结构。 有关此成员的说明,请参见 IConvertible.ToBoolean。 |
![]() ![]() | IConvertible.ToByte | 基础结构。 有关此成员的说明,请参见 IConvertible.ToByte。 |
![]() ![]() | IConvertible.ToChar | 基础结构。 不支持此转换。尝试使用此方法将引发 InvalidCastException。 |
![]() ![]() | IConvertible.ToDateTime | 基础结构。 不支持此转换。尝试使用此方法将引发 InvalidCastException。 |
![]() ![]() | IConvertible.ToDecimal | 基础结构。 有关此成员的说明,请参见 IConvertible.ToDecimal。 |
![]() ![]() | IConvertible.ToDouble | 基础结构。 有关此成员的说明,请参见 IConvertible.ToDouble。 |
![]() ![]() | IConvertible.ToInt16 | 基础结构。 有关此成员的说明,请参见 IConvertible.ToInt16。 |
![]() ![]() | IConvertible.ToInt32 | 基础结构。 有关此成员的说明,请参见 IConvertible.ToInt32。 |
![]() ![]() | IConvertible.ToInt64 | 基础结构。 有关此成员的说明,请参见 IConvertible.ToInt64。 |
![]() ![]() | IConvertible.ToSByte | 基础结构。 有关此成员的说明,请参见 IConvertible.ToSByte。 |
![]() ![]() | IConvertible.ToSingle | 基础结构。 有关此成员的说明,请参见 IConvertible.ToSingle。 |
![]() ![]() | IConvertible.ToType | 基础结构。 有关此成员的说明,请参见 IConvertible.ToType。 |
![]() ![]() | IConvertible.ToUInt16 | 基础结构。 有关此成员的说明,请参见 IConvertible.ToUInt16。 |
![]() ![]() | IConvertible.ToUInt32 | 基础结构。 有关此成员的说明,请参见 IConvertible.ToUInt32。 |
![]() ![]() | IConvertible.ToUInt64 | 基础结构。 有关此成员的说明,请参见 IConvertible.ToUInt64。 |
Single 值类型表示一个值介于 -3.402823e38 和 +3.402823e38 之间的单精度 32 位数字,以及正零或负零、PositiveInfinity、NegativeInfinity 和非数字 (NaN)。
Single 符合二进制浮点算法的 IEC 60559:1989 (IEEE 754) 标准。
Single 为比较此类型的实例,将实例的值转换为它的字符串表示形式以及将数字的字符串表示形式转换为此类型的实例提供了相应的方法。
使用浮点数
在执行二进制运算时,如果一个操作数为浮点类型(Single 或 Double),那么另一个操作数应当为整数类型或浮点类型。此运算计算如下:
如果其中一个操作数为整数类型,那么该操作数将被转换为另一个操作数所属的浮点类型。
然后,如果任意一个操作数为 Double,则另一个操作数将被转换为 Double,并且至少使用 Double 的范围和精度执行运算。对于数值运算,结果的类型为 Double。
否则,将至少使用 Single 类型的范围和精度执行运算,而且对于数值运算,结果的类型为 Single。
浮点运算符(包括赋值运算符)不会引发异常。在异常情况下,浮点运算的结果为零、无穷或 NaN,如下所述:
如果浮点运算的结果对于目标格式来说太小,则运算的结果为零。
如果浮点运算结果的数值对于目标格式来说太大,则运算的结果为 PositiveInfinity 或 NegativeInfinity(具体取决于结果的符号)。
如果浮点运算无效,则运算的结果为 NaN。
浮点值和精度损失
请记住,浮点数只能近似于十进制数字,浮点数的精度决定了浮点数近似于十进制数字的精确程度。默认情况下,Single 值只包含 7 位精度,但内部维护的最大精度是 9 位。浮点数的精度有几种结果:
特定精度下看似相等的两个浮点数可能并不相等,因为它们的最小有效位数不同。
由于浮点数可能无法精确近似于十进制数,如果使用十进制数,则使用浮点数的数学或比较运算可能不会产生相同的结果。
如果涉及浮点数,值可能不往返。值的往返是指,某个运算将原始浮点数转换为另一种格式,而反向运算又将转换后的格式转换回浮点数,且最终浮点数与原始浮点数相等。由于一个或多个最低有效位在转换中丢失或更改,往返可能会失败。
接口实现
此类型实现接口 IComparable、IComparable<T>、IFormattable、IConvertible 和 IEquatable<T>。使用 Convert 类进行转换,而不是使用此类型的 IConvertible 显式接口成员实现。






