Tag: 64位

x86和x64之间的浮点算术的差异

我偶然发现了在x86和x64的MS VS 2010版本之间完成浮点算术的方式不同(两者都在同一台64位机器上执行)。 这是一个简化的代码示例: float a = 50.0f; float b = 65.0f; float c = 1.3f; float d = a*c; bool bLarger1 = d<b; bool bLarger2 = (a*c)<b; 布尔bLarger1始终为false(在两个版本中d都设置为65.0)。 变量bLarger2对于x64为false,但对于x86为true! 我很清楚浮点算术和圆角效应正在发生。 我也知道32位有时使用不同的指令进行浮动操作而不是64位构建。 但在这种情况下,我错过了一些信息。 为什么bLarger1和bLarger2之间首先存在差异? 为什么它只出现在32位构建中?