[問題] 浮點運算誤差

作者: alsmknn (alsm)   2021-05-20 22:03:59
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
使用者(已經有用R 做過不少作品)
[問題敘述]:
想請問一下大家有沒有看過excel跑出的結果與R跑出的結果不一樣的?
我有一個excel檔案用以模擬某個東西的溫度變化,我的工作是把他轉成R
我轉成R後發現溫度結果對不上(百來次計算後差約2%, 上百萬次後差10%)
,經過拆解中間的運算過程後,發現是因為R和excel使用的小數點位數不同
因此一開始是百萬分之一的差異經過多次累加後就變大了。
請問有什麼方法可以使兩者用一樣的小數位數進行計算嗎?謝謝
[程式範例]:
[環境敘述]:
win 10 , R 3.6.1
作者: andrew43 (討厭有好心推文後刪文者)   2021-05-20 23:14:00
round強制以某個特定位數,但可能損失精確度不過究竟辦法還是要了解二者浮點數處理到底怎麼回事吧
作者: alsmknn (alsm)   2021-05-21 00:25:00
我試過讓R只讀進小數下第四位,但他還是會自己補上小數四位後的數值(非0)
作者: andrew43 (討厭有好心推文後刪文者)   2021-05-21 18:31:00
不只輸入,運算過程要都一致。感覺很麻煩
作者: Edster (Edster)   2021-05-22 02:25:00
用readxl讀進來的時候,不要讀成數字。用字串處裡調尾數。
作者: alsmknn (alsm)   2021-05-22 04:05:00
我找到了個packge Rmpfr可以要求R使用更多digit進行運算但是跟andrew大說的一樣運算中會不斷變回原本的digit位數我目前還在找方法強迫R對每個數都使用更多digits運算

Links booklink

Contact Us: admin [ a t ] ucptt.com