You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何R读取Excel数值时出现小数位膨胀,与原数据不一致?

问题原因解析:Excel与R的数值精度差异

这不是R读取数据时额外增加了精度,核心原因是浮点数的二进制存储特性,具体细节如下:

  • 不管是Excel还是R,都是采用IEEE 754标准的二进制浮点数来存储小数,但很多十进制小数无法被二进制精确表示(比如0.1的二进制是无限循环的)。你手动输入的34.691就是这类无法被二进制精确存储的数值。
  • Excel会默认按照你输入的格式(保留3位小数)显示数值,不会暴露底层存储的近似二进制值;但R会直接展示这个近似值的十进制形式,所以你看到了34.690999999999995——这只是存储的近似值,并非R额外添加了精度。
  • 求和结果不一致是因为这种微小的精度误差在累加时会被放大。Excel在计算过程中可能会自动做舍入处理,或者最终显示结果时截断了小数位;而R会基于原始的近似值完成计算,所以两者的求和结果会出现差异。

如果要让R的求和结果和Excel一致,可以用round()函数把数值保留3位小数后再计算:

round(mysheets[["df1"]]$目标列名, 3) %>% sum()

内容的提问来源于stack exchange,提问作者Helmasan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 07:15:50