Re: [問題] 計算精確度的問題
※ 引述《fillano (冒牌費大公)》之銘言:
: 今天在javaworld看到一個問題,我自己試了一下,發現
: a=0.82;
: alert(a+1-1);
: 在ie會顯示0.8199999999999998
: 在ff會顯示0.8199999999999998
: 這是什麼原因呢?
這我之前做FLASH的時候也發生同樣的問題
trace出來的值明明就是0.82
可是要他判斷(0.82+1-1)==a的時候
就會傳出false
這是因為二進位的問題 感謝FLASH版的高手給的方向
之後有看到書上說到
0.82要轉換成二進位,由於是純小數,所以要直接乘以2然後取整數部分
剩下的小數部分再乘以2,一直下去
(最後答案是什麼我忘記怎麼表示了 但方法好像就是這樣)
但是這樣的轉換會有沒辦法剛好乘起來是整數,因此就會有無限循環的狀況
剛在excel上面測試0.82這樣一直乘以2,然後取整數,會發現小數會有重複
(另外發現excel也會有出現不精準的狀況)
那其實這樣的數字是很接近很接近原本我們要的十進位數字
因此我在判斷是否相同的時候
會將兩數相減 然後乘以一個倍數 如1000000等
(越大越精準 但不曉得可以精準到什麼地步)
再用四捨五入法去取 最後等於0的話
就代表這兩個數字相當接近
哈 這是我的作法啦
講好多 但是觀念並沒有非常確定 有錯還請指教
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.19.207.224
→
01/10 17:02, , 1F
01/10 17:02, 1F
→
01/10 17:03, , 2F
01/10 17:03, 2F
→
01/10 17:04, , 3F
01/10 17:04, 3F
→
01/10 17:17, , 4F
01/10 17:17, 4F
→
01/10 18:15, , 5F
01/10 18:15, 5F
→
01/10 18:15, , 6F
01/10 18:15, 6F
推
01/10 22:38, , 7F
01/10 22:38, 7F
→
01/10 22:39, , 8F
01/10 22:39, 8F
→
01/11 11:23, , 9F
01/11 11:23, 9F
討論串 (同標題文章)
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章