我发现跑步了
Math.Log10(double.Epsilon)
Run Code Online (Sandbox Code Playgroud)
将-324在机器A上返回,但将-Infinity在机器B上返回.
他们最初的表现方式与回归相同-324.
两台机器都使用相同的操作系统(WinXP SP3)和.NET版本(3.5 SP1).机器B上可能有Windows更新,但是不知道发生了什么变化.
什么可以解释行为上的差异?
评论中讨论的更多细节:
Math.Log10(double.Epsilon)在机器B上打印一个简单的控制台应用程序-324,而不是-Infinity0x9001F(读取_controlfp()).更新:最后一点(FPU控制字)不再成立:使用较新版本的_controlfp()显示不同的控制字,这解释了不一致的行为.(有关详细信息,请参阅下面的rsbarro答案.)