在 R 中处理 IEEE 754 浮点不精确问题的最佳方法是什么?

What is the best way to handle IEEE 754 floating point imprecision issues in R?

提问人:Bear Bile Farming is Torture 提问时间:6/17/2019 更新时间:6/18/2019 访问量:51

问:

所以问题是 .1 + .2 =/= .3

语言是 R。

我有一堆分数,最终总和应该为 1。我有一个失败的断言语句,因为由于这个问题,这种不变性并不总是成立。

最好的解决方案是什么?

R 浮点 精度 IEEE-754

评论

1赞 MrFlick 6/17/2019
“最好”到底是什么意思?关于现有的问题似乎有很多讨论:stackoverflow.com/questions/9508518/......。“最佳”解决方案是更改代码,使其不依赖于浮点数来完全等于某个浮点值。
0赞 abcalphabet 6/17/2019
这可能有点骇人听闻,但在这样的情况下,我通常只是简单地求助于断言abs(1-val) < .000000000000001
0赞 MrFlick 6/17/2019
好吧,正如另一个问题所指出的,总的来说可能是一个更好的选择。all.equal()
0赞 Eric Postpischil 6/18/2019
是要更改数字以使断言成立,还是要更改断言以使其接受数字?断言的目的是检测代码中的错误,还是保护一些需要恰好一个或其他东西的总和的后续计算?
0赞 Eric Postpischil 6/18/2019
如果只是在测试代码中的 bug,请更改断言以接受接近 1 的值。它仍然会检测大多数错误。如果后续计算依赖于总和正好为 1,请将其更改为更宽容。如果您无法更改它,还有其他 Stack Overflow 问题,即伪造数字序列以使总和恰好为 1。

答: 暂无答案