[問題] 浮點運算誤差

看板R_Language作者 (alsm)時間2年前 (2021/05/20 22:04), 編輯推噓1(108)
留言9則, 3人參與, 2年前最新討論串1/1
[問題類型]: 程式諮詢(我想用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://www.ptt.cc/bbs/R_Language/M.1621519441.A.0EF.html

05/20 23:14, 2年前 , 1F
round強制以某個特定位數,但可能損失精確度
05/20 23:14, 1F

05/20 23:15, 2年前 , 2F
不過究竟辦法還是要了解二者浮點數處理到底怎麼回事吧
05/20 23:15, 2F

05/21 00:25, 2年前 , 3F
我試過讓R只讀進小數下第四位,但他還是會自己補上小數
05/21 00:25, 3F

05/21 00:25, 2年前 , 4F
四位後的數值(非0)
05/21 00:25, 4F

05/21 18:31, 2年前 , 5F
不只輸入,運算過程要都一致。感覺很麻煩
05/21 18:31, 5F

05/22 02:25, 2年前 , 6F
用readxl讀進來的時候,不要讀成數字。用字串處裡調尾數。
05/22 02:25, 6F

05/22 04:05, 2年前 , 7F
我找到了個packge Rmpfr可以要求R使用更多digit進行運算
05/22 04:05, 7F

05/22 04:05, 2年前 , 8F
但是跟andrew大說的一樣運算中會不斷變回原本的digit位數
05/22 04:05, 8F

05/22 04:06, 2年前 , 9F
我目前還在找方法強迫R對每個數都使用更多digits運算
05/22 04:06, 9F
文章代碼(AID): #1WfcnH3l (R_Language)
文章代碼(AID): #1WfcnH3l (R_Language)