次のテストが与えられます:
[Fact]
public void FactMethodName()
{
var d = 6.4133;
var actual = d.ToString("R");
Assert.Equal("6.4133", actual);
}
x86では渡されますが、AnyCPUまたはx64では渡されません。
Assert.Equal() Failure
Position: First difference is at position 5
Expected: 6.4133
Actual: 6.4132999999999996
問題は、なぜそれが起こるのかということです。すべてのdouble値がこのように動作するわけではないことに注意してください。
浮動小数点の問題について理解しています。ウィキペディアを指す必要はありません。テストが正しくないことを指摘する必要はありません-それは問題を示しているだけです-必要に応じてに変更してConsole.WriteLine(..);
ください。
更新これらの詳細は無関係であることが判明したため、テストランナーの言及を削除しました。