Python,C++,C#,F#中不合逻辑的不等式

Aid*_*n.T -1 c# c++ python math f#

0.1 + 0.2 == 0.3 ==> False
Run Code Online (Sandbox Code Playgroud)

我在python,c#,c ++,F#,Visual Basic.NET,ASP.NET中尝试过这个!

0.1 + 0.2 == 0.30000000000000004 ==> True
Run Code Online (Sandbox Code Playgroud)

对于我上面提到的所有语言,这都是正确的.为什么会出现这种不合逻辑的不平等?

Tom*_*mmy 5

Python有一个十进制库,允许你将其评估为true(同时也解释了为什么它的错误),事实上,它们几乎使用了相同的例子:http://docs.python.org/ 2 /库/ decimal.html

精确性延续到算术中.在十进制浮点数中,0.1 + 0.1 + 0.1 - 0.3正好等于零

还有一个相关的,"每个计算机科学家都应该了解浮点数",这是多年前写的一篇开创性的文章,今天仍然如此:http://www.fer.unizg.hr/_download/repository/paper%5B1%5D.pdf

  • 那么F#`0.1M + 0.2M = 0.3M` (2认同)