关于float类型的问题

发布于 2024-10-13 06:21:38 字数 46 浏览 5 评论 0原文

在 C# 中,如何检测值是 4 字节浮点类型还是 8 字节浮点类型或两者不同?

How can I detect an value is 4 bytes float type or 8 byte float type or not both in C#?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

狼性发作 2024-10-20 06:21:38
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
if (obj.GetType() == typeof(float))
    // 4-byte float
else if (obj.GetType() == typeof(double))
    // 8-byte float
else
    // other

Alternatively, this should do the same thing:

if (obj is float)
    // 4-byte float
else if (obj is double)
    // 8-byte float
else
    // other
三寸金莲 2024-10-20 06:21:38

C# 中的 float 始终是 System.Single 的别名,它始终是 4 字节浮点值。

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

如果您正在处理 float 值,在 C# 中,它始终是 4 个字节。这与平台无关,而是由 C# 规范保证。

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

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

float in C# is always an alias for System.Single, which is always a 4 byte floating point value.

double in C# is always an alias for System.Double, which is an 8 byte floating point value.

If you are dealing with a float value, in C#, it is always 4 bytes. This is not platform dependent, but rather guaranteed by the C# specification.

The C# spec, section 1.3 (Types and variables) states this explicitly:

The two floating point types, float and double, are represented using the 32-bit single-precision and 64-bit double-precision IEEE 754 formats.

攒一口袋星星 2024-10-20 06:21:38

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

if( myVariable is float ){
  ...
}

要查看浮点数的实际大小(如果您需要的话):

int length = sizeof(float);

您不能使用 sizeof(myVariable),因此您必须同时使用上述两种方法中的一种。

To see it your variable is a float or not, use the following code

if( myVariable is float ){
  ...
}

To see the actual size of float if that is what you need:

int length = sizeof(float);

You cannot use sizeof(myVariable), so you have to use both of the two approaches above.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文