R语言计算结果不一致求助:如何获取正确计算结果?
R语言数值计算结果不一致的原因及解决方法
这是因为变量weku显示的10.47855是四舍五入后的简化输出,它在内存中存储的是更精确的原始数值;而你直接用10.47855做计算时,用的是这个近似的显示值,两者底层数值存在微小差异,最终导致除法结果不同。
验证真实数值
先查看weku的完整存储值:
# 显示weku的高精度数值 print(weku, digits = 15) # 或者用sprintf输出指定精度 sprintf("%.12f", weku)
执行后你会发现,weku的真实值并不是刚好10.47855,比如可能是10.4785499999999或10.4785500000001这类更精确的数值。
解决方法
根据需求选择对应方式:
- 若要和直接输入数值的结果一致,将
weku四舍五入到5位小数后再计算:
weku_rounded <- round(weku, 5) daten[1,16] / weku_rounded
- 若要基于
weku的真实精确值计算,直接使用变量计算即可,这个结果其实是更准确的(它用了未被截断的原始数值)。
内容的提问来源于stack exchange,提问作者Christian Oswald
相关产品推荐
相关产品推荐

