作者alsmknn (alsm)
看板R_Language
标题[问题] 浮点运算误差
时间Thu May 20 22:03:59 2021
[问题类型]:
程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来)
[软体熟悉度]:
使用者(已经有用R 做过不少作品)
[问题叙述]:
想请问一下大家有没有看过excel跑出的结果与R跑出的结果不一样的?
我有一个excel档案用以模拟某个东西的温度变化,我的工作是把他转成R
我转成R後发现温度结果对不上(百来次计算後差约2%, 上百万次後差10%)
,经过拆解中间的运算过程後,发现是因为R和excel使用的小数点位数不同
因此一开始是百万分之一的差异经过多次累加後就变大了。
请问有什麽方法可以使两者用一样的小数位数进行计算吗?谢谢
[程式范例]:
[环境叙述]:
win 10 , R 3.6.1
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 24.157.129.163 (加拿大)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1621519441.A.0EF.html
1F:→ andrew43: round强制以某个特定位数,但可能损失精确度 05/20 23:14
2F:→ andrew43: 不过究竟办法还是要了解二者浮点数处理到底怎麽回事吧 05/20 23:15
3F:→ alsmknn: 我试过让R只读进小数下第四位,但他还是会自己补上小数 05/21 00:25
4F:→ alsmknn: 四位後的数值(非0) 05/21 00:25
5F:→ andrew43: 不只输入,运算过程要都一致。感觉很麻烦 05/21 18:31
6F:推 Edster: 用readxl读进来的时候,不要读成数字。用字串处里调尾数。 05/22 02:25
7F:→ alsmknn: 我找到了个packge Rmpfr可以要求R使用更多digit进行运算 05/22 04:05
8F:→ alsmknn: 但是跟andrew大说的一样运算中会不断变回原本的digit位数 05/22 04:05
9F:→ alsmknn: 我目前还在找方法强迫R对每个数都使用更多digits运算 05/22 04:06