首页 > 解决方案 > C#浮点/双差依赖于平台

问题描述

当涉及到 C# 中的 x64 和 x86 平台时,我在 Double/Float 上有一些奇怪的行为。

一个简单的测试在这里:

float testVar= 50;
double test = 1/ testVar* 1e6; (1e6 is double)
test == 19999.9995529652 for x64 and test == 20000 for x86

然而:

double test = 1 / 50f *1e6; (1e6 is double)
test == 19999.9995529652 for both platforms

我知道,x64 和 x86 之间的计算是不一样的(在 x86 上具有扩展计算的 FPU 和在 x64 上具有 SSE2 的 FPU),但真正打动我的是 x64 和 x86只有在计算和直接分配 float testVar 时表现不同计算出来没有区别。

有谁知道为什么?

标签: c#floating-pointdouble32bit-64bit

解决方案


推荐阅读