static void Main(string[] args)
{
double a = 222.65;
double b = 0.056124761669643426;
double c = (double) ((decimal) a*(decimal) b);
}
为什么这些计算会在不同的操作系统上产生不同的结果? 这部分总是给出相同的结果:
((decimal) a*(decimal) b)
在施法加倍之后我得到:
12.496178185746102
或
12.496178185746105
我的问题是这个微小的变化对结果有很大影响,测试失败。
现在重要的信息:
Windows 8,Windows Server 2012(两者都在一起发布)后似乎发生了变化。我一直认为结果可能只受.NET版本的影响。有什么想法吗?
编辑:由于我身边的错误信息,有一个例子:
double a = 222.65;
double b = 0.056124761669643426;
double c = (double) ((decimal) a*(decimal) b);
double result = Process(c) <- doing something very complicated
Assert.That(result,expectedResult,tolerance=1E-8) <- here is an impact