我在xUnit中有以下測試用例。Visual Studio 2015更新2使浮點計算更準確?
Assert.NotEqual(0f, 0.1f + 0.2f - 0.3f);
Assert.NotEqual(0d, 0.1d + 0.2d - 0.3d);
Assert.Equal(0m, 0.1m + 0.2m - 0.3m);
他們在.NET 4或4.5的VS 2010,2012,2013和2015年一直工作良好。結果與MS Test相同。測試用例將證明浮點運算可能不夠精確。因爲0.1 + 0.2預計爲0.30000000000000004。但是,今天,我發現第一種情況已經被破壞,顯然.NET運行時和編譯器認爲0.1f + 0.2f == 0.3f。我不確定這與我前幾天升級到VS 2015更新2有關。然後我嘗試在VS 2012 Update 4中進行相同的測試,第一個測試用例即可。我懷疑VS 2015 update 2的.NET編譯器壞了,或者正在使浮點計算更準確。只要通過VS 2015更新2進行編譯,結果在.NET 4,4.5和4.6.1之間是一致的。我不完全確定這是VS 2015更新2的缺陷,還是一件好事?你有什麼想法嗎?
我懷疑這與運行時有什麼關係,因爲所有表達式都是常量表達式。我建議你看看生成的IL。 –
傾向於明智地只測試您實際可以修復的代碼。你必須點擊[New Issue按鈕](https://github.com/dotnet/roslyn/issues)。 –
爲什麼你會有這些測試案例?你不必測試語言本身。 –