[問題] (R語言) 0.2 + 0.7 == 0.9 為什麼是false消失

看板Statistics作者時間8年前 (2015/09/07 02:11), 編輯推噓2(2012)
留言14則, 5人參與, 最新討論串1/1
R語言新手, 正在試學 想請問為什麼 0.2+0.7 == 0.9 或 0.3 + 0.6 == 0.9 都是false 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 108.36.227.247 ※ 文章網址: https://www.ptt.cc/bbs/Statistics/M.1441563091.A.BFC.html

09/07 03:45, , 1F
查一下浮點數是什麼,例如,0.2並不是真的0.2。
09/07 03:45, 1F

09/07 03:47, , 2F
在你的例子中,需要先round()。
09/07 03:47, 2F

09/07 03:48, , 3F
round(0.2+0.7, 1) == round(0.9, 1) # True
09/07 03:48, 3F

09/07 03:49, , 4F
也可以看看 0.2+0.7-0.9 的結果是什麼。
09/07 03:49, 4F

09/07 07:30, , 5F
不只是 R 中如此. 幾乎所有計算機語言都如此. 關鍵是數值在
09/07 07:30, 5F

09/07 07:31, , 6F
計算機中以二進位制儲存, 而在十進位是有限小數的, 在二進
09/07 07:31, 6F

09/07 07:31, , 7F
位中很多是無窮小數, 如0.2, 0.3, 0.6, 0.7 皆是.
09/07 07:31, 7F

09/07 07:42, , 8F
formatHex(3.3125) = +0x1.a800000000000p+1
09/07 07:42, 8F

09/07 07:44, , 9F
1.a8我知道怎麼來 前面的0X 跟後面的P+1 是甚麼意思?
09/07 07:44, 9F

09/07 07:59, , 10F
09/07 07:59, 10F

09/07 08:29, , 11F
謝謝 我再看下那篇文章
09/07 08:29, 11F

09/07 09:25, , 12F
更改標題
09/07 09:25, 12F

09/07 17:23, , 13F
用all.equal來判斷吧
09/07 17:23, 13F

09/08 03:42, , 14F
Thank you all~
09/08 03:42, 14F
文章代碼(AID): #1Lx87Jly (Statistics)