这不是一个现实世界的例子!请不要建议使用decimal或其他东西.
我只是问这个,因为我真的想知道为什么会这样.
我最近再次与Jon Skeet一起看到了令人敬畏的Tekpub网络广播C#4.0.
在第7集- 小数和浮点数它真的很奇怪,甚至我们的 Chuck Norris of Programming(又名Jon Skeet)对我的问题没有真正的答案.只有一个可能.
MyTestMethod()失败并MyTestMethod2()通过?[Test]
public void MyTestMethod()
{
double d = 0.1d;
d += 0.1d;
d += 0.1d;
d += 0.1d;
d += 0.1d;
d += 0.1d;
d += 0.1d;
d += 0.1d;
d += 0.1d;
d += 0.1d;
Console.WriteLine("d = " + d);
Assert.AreEqual(d, 1.0d);
}
Run Code Online (Sandbox Code Playgroud)
这导致了
d = 1
预期:0.99999999999999989d但是:1.0d …