如何在C#中检测一个值是4字节浮点类型还是8字节浮点类型?
答案 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)
float
始终是System.Single
的别名,它始终是一个4字节的浮点值。
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)
,因此您必须使用上述两种方法。