作者shouqing0801 (?)
看板MATLAB
標題[問題]matlab讀取excel資料數值問題
時間Tue Jun 4 20:46:11 2013
想請教我在excel有一個欄位是38.40 將要用這欄位去做計算
但我讀進來matlab做計算時
matlab是以38.399999999999999去顯示並做計算
我推測顯示是因為format long造成的問題
所以我將其改成format short
雖然matlab是以38.40去做顯示
但依舊是用38.399999999999999去做計算
精度會不準,想請問有什麼辦法能解決這個問題,
感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.163.81.146
1F:→ kdjf:原因:float point error, 解symbolic toolbox但你得想清楚這 06/04 20:49
2F:→ kdjf:是不是你要的 06/04 20:50
3F:→ kdjf:如果他應該要是整數,就該用int的形態存 06/04 20:59
※ 編輯: shouqing0801 來自: 1.163.81.146 (06/04 22:21)
像我輸入38400/1000
但不知道為何運算結果會是38.399999999999999
※ 編輯: shouqing0801 來自: 1.163.81.146 (06/04 22:43)
4F:推 peter0318:使用四捨五入吧~ 06/05 00:41
5F:推 sunev:如果你希望留在整數,請宣告成int 06/05 01:20
我是用實數計算,我不清楚為何excel上面的值是38.40
但我用format long去顯示 其值變成38.399999999999999
而不是應該是38.400000000000000
而且運算也是用38.399999999999999計算
我的excel資料裡有的是整數,但有的是浮點數,所以沒辦法全部都設為整數
另外我直接在command windows
輸入38.15
ans =
38.149999999999999
謝謝
我能了解前面你們所說的,我只是不知道為什麼會出現這樣的情況
這讓我無法理解 38.149999999999999 是怎麼來的
雖然在matlab官方討論區有人貼了相關IEEE文獻,
但我還是無法理解,感謝
※ 編輯: shouqing0801 來自: 1.163.81.146 (06/05 02:18)
6F:→ sunev:電腦裡的數字是有最小單位的,就這樣。 06/05 02:48
十分感謝,文獻上面有提到,
想請問有辦法令其在運算時是用顯示的數字去記算嗎?
謝謝.
※ 編輯: shouqing0801 來自: 1.163.81.146 (06/05 02:51)
7F:推 sunev:大多數時候差10^-15沒關係,你在乎的話得用支援符號計算 06/05 06:27
8F:→ sunev:的軟體,像是mathematica之類的。 06/05 06:27