我在R中遇到一个非常简单的算术问题的浮点错误:
17.1 - 5.9 - 11.2
5.9 + 11.2 - 17.1
分别产生1.776357e-15
和0
。当我拥有非常大或非常小的数字时,我都遇到了这些问题,但是这些数字到零位只是零。
为什么我得到不同的结果?
此问题与Why are these numbers not equal?不同,因为我在每个方程式中执行相同数量的运算(2),不同之处是一个加/减号。我很好奇为什么。
非常感谢您的提前帮助!
哦,还在macOS v.10.13.6上使用R v.3.5.1。
答案 0 :(得分:2)
R组从左到右等于优先级二进制运算符。
17.1 - 5.9 - 11.2
等效于(17.1 - 5.9) - 11.2
5.9 + 11.2 - 17.1
等效于(5.9 + 11.2) - 17.1
这两个表达式远没有乍一看的相似。分组的更改足以引起不同的舍入错误。