【问题标题】:Avoid floating point zero when summing scaled set of numbers in R在对 R 中的缩放数字集求和时避免浮点零
【发布时间】:2018-03-19 06:24:25
【问题描述】:

我正在重新调整一组数字,并希望避免为重新调整的数字之和得到浮点零:

x <- c(-5, 1, 8)
y <- scale(x)
sum(y)
# [1] 1.249001e-16

有没有办法解决这个问题以强制总和为零?我不关心超过小数点后三位的精度。

【问题讨论】:

  • 这个总和不是已经精确到小数点后三位了吗?
  • @hpesoj626 缩放向量 y 进入需要 sum(y) == 0 的函数。需要一些东西让我超越这个 if 语句
  • 在你的函数中要求round(sum(y), 3) == 0怎么样?
  • @hpesoj626 这不是我的功能...试图避免破解其他人的代码
  • 如果传递给y 的例程要求用浮点运算计算的数字之和正好为零,那么它的设计不适合浮点运算,应该是固定的。强制 y 的元素总和为零不是一个好的解决方案,因为它会增加误差。

标签: r floating-point rescale


【解决方案1】:

我认为你不应该只是在某个时候“切换”到整数。缩放是用浮点数计算的,因此不是 100% 精确的。将某些值强制为 0 表示精度不可用,因此应避免使用。

如果您需要比较浮点值,请按照 R 文档的建议使用 isTRUE(all.equal(...))https://stat.ethz.ch/R-manual/R-devel/library/base/html/all.equal.html

【讨论】:

  • 这没有回答问题。
猜你喜欢
  • 1970-01-01
  • 2015-12-31
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 2012-11-26
  • 2016-04-24
  • 2022-11-09
  • 1970-01-01
相关资源
最近更新 更多