这个静态变量声明如何返回无穷大?

时间:2016-02-28 22:14:32

标签: c# math syntax

我试图将一些C#代码(Chipmunk物理引擎)移植到Xojo。

在类声明中,声明了两个公共静态变量:

public static byte[] INFINITY = { 0x00, 0x00, 0x80, 0x7F };

public static float Infinity
{
    get
    {
        return BitConverter.ToSingle(INFINITY, 0);
    }
}

据我了解,从MSDN文档中,对静态变量Infinity的调用应返回由索引0开始的四个字节组成的单精度浮点数,即应返回0x0000807F as一个32位整数。那不是32895吗?

1 个答案:

答案 0 :(得分:2)

不,这个字节是存储浮点数据的低级别的表示: https://en.wikipedia.org/wiki/Single-precision_floating-point_format

此外,这是一个非常实用的IEEE格式在线计算器: http://www.h-schmidt.net/FloatConverter/IEEE754.html

尝试将“Hexadecimal Representation”设置为0x7f800000,并在“After casting to double precision”框中显示“Infinity”。

顺便说一句,该值为0x7f800000,而不是0x0000807f,因为内存中的字节序数很少。