简单的运算会导致R

时间:2019-05-13 12:46:36

标签: r floating-point precision

我在R中遇到一个非常简单的算术问题的浮点错误:

17.1 - 5.9 - 11.2
5.9 + 11.2 - 17.1

分别产生1.776357e-150。当我拥有非常大或非常小的数字时,我都遇到了这些问题,但是这些数字到零位只是零。

为什么我得到不同的结果?

此问题与Why are these numbers not equal?不同,因为我在每个方程式中执行相同数量的运算(2),不同之处是一个加/减号。我很好奇为什么。

非常感谢您的提前帮助!

哦,还在macOS v.10.13.6上使用R v.3.5.1。

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

这两个表达式远没有乍一看的相似。分组的更改足以引起不同的舍入错误。