关于浮动类型的问题

时间:2011-01-24 06:38:37

标签: c# types c#-2.0

如何在C#中检测一个值是4字节浮点类型还是8字节浮点类型?

3 个答案:

答案 0 :(得分:4)

if (obj.GetType() == typeof(float))
    // 4-byte float
else if (obj.GetType() == typeof(double))
    // 8-byte float
else
    // other

或者,这应该做同样的事情:

if (obj is float)
    // 4-byte float
else if (obj is double)
    // 8-byte float
else
    // other

答案 1 :(得分:4)

C#中的

float始终是System.Single的别名,它始终是一个4字节的浮点值。

C#中的

double始终是System.Double的别名,它是一个8字节的浮点值。

如果您正在处理float值,则在C#中,它总是4个字节。这不依赖于平台,而是由C#规范保证。

C#规范,第1.3节(类型和变量)明确说明了这一点:

  

两种浮点类型float和double使用32位单精度和64位双精度IEEE 754格式表示。

答案 2 :(得分:1)

要查看您的变量是否为浮点数,请使用以下代码

if( myVariable is float ){
  ...
}

如果您需要,请查看float的实际大小:

int length = sizeof(float);

您无法使用sizeof(myVariable),因此您必须使用上述两种方法。