以下表达式false在C#中求值:
(1 + 1 + 0.85) / 3 <= 0.95
Run Code Online (Sandbox Code Playgroud)
我认为它在大多数实现IEEE 754的其他编程语言中也是如此,因为(1 + 1 + 0.85) / 3评估0.95000000000000007结果大于0.95.
但是,即使Excel也应该实现大部分IEEE 754,以下在Excel 2013中评估为TRUE:
= ((1 + 1 + 0.85) / 3 <= 0.95)
Run Code Online (Sandbox Code Playgroud)
这有什么具体原因吗?上面链接的文章没有提到任何可能导致此行为的Excel自定义实现.你能告诉Excel严格按照IEEE 754进行舍入吗?
请注意,即使大多数Excel问题都应该在superuser.com上提出,但这个问题涉及浮点运算,这是编程语言中的常见问题.从这个问题的主题来看,Excel是一种编程语言,如C#或Java.