提问人:Johnny Williamson 提问时间:1/4/2022 更新时间:1/5/2022 访问量:79
R 双精度和系统添加的小数 [重复]
R Doubles and System-Added Decimals [duplicate]
问:
我有以下从电子表格中的数据导入的双精度向量。数据表示会计价值。
> 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() 函数期间制造小数。
答: 暂无答案
评论
dput