R 双精度和系统添加的小数 [重复]

R Doubles and System-Added Decimals [duplicate]

提问人:Johnny Williamson 提问时间:1/4/2022 更新时间:1/5/2022 访问量:79

问:

我有以下从电子表格中的数据导入的双精度向量。数据表示会计价值。

> amts 
[1]        0.00    2616.79    3908.20       0.00       0.00       0.00      50.25     600.54    2104.29       0.00     800.13     837.08
[13]     588.85     550.57     435.07       0.00    4000.00    5000.00   10000.00  120000.00  266000.00       0.00   16089.71       0.00
[25]   11202.35   21594.32   10238.44       0.00    5500.10       0.01       0.00     296.67     313.79    -430.42     -42.02     -11.99
[37]      -0.20       0.00       0.00       0.00       0.00       0.00   -3519.57   -3323.94   -6815.91   -4540.39  -35268.87  -29260.34
[49]  -26896.01       0.00  -22384.00  -49929.73  -27860.94   -4055.22  -21776.87   -8671.80       0.00    1366.38  -85548.01 -208958.93
[61]   55201.62
> typeof(amts)
[1] "double"

当我将它们全部相加时,该值返回的小数位数比必要的要多得多。这就像 R 正在添加不存在的小数点。

> sum(amts)
[1] 1.327294e-11

奇怪的是,当我将向量分块求和时,行为并不相同。

> (x <- sum(amts[1:30]))
[1] 482116.7
> (y <- sum(amts[31:61]))
[1] -482116.7
> x + y
[1] 0

我很想知道这种行为以及 R 如何/为什么在应用该函数之前似乎不存在的 sum() 函数期间制造小数。

r 进制 精度

评论

1赞 Peace Wang 1/4/2022
这回答了你的问题吗?在 R 中控制打印输出中的十进制位数
0赞 Maël 1/4/2022
您能向我们提供您的数据集吗?这样我们就可以更好地回答您的问题。dput
1赞 lovalery 1/4/2022
嗨,@Johnny威廉姆森。向量的总和应为零。这是一个浮点问题。请在这篇非常鼓舞人心的帖子中找到所有必要的解释。干杯。
1赞 Johnny Williamson 1/5/2022
@lovalery 这让我找到了解决方案。谢谢!我准备了一个答案,但看起来这个问题已经关闭(尽管我认为它不等同于与控制打印输出中的小数点相关的问题/答案)。

答: 暂无答案