[問題] 浮點數尾端出現一長串誤差值
最近用for迴圈,針對浮點數測試,如以下
var x=0;
var i:int;
for(i=0;i<100;i++){
x=x+0.1;
trace(x);
}
發現如果相加的差額是整數(如x=x+1),則印出非常正常(1,2,3,.....,99,100)
但如果是浮點數(如x=x+0.1, x=x+0.01),尾端時常會出現誤差數值
如以下:
[當x=x+0.1]
0.1
0.2
0.30000000000000004
0.4
0.5
0.6
0.7
0.7999999999999999
0.8999999999999999
0.9999999999999999
1.0999999999999999
[當x=x+0.01]
0.01
0.02
0.03
0.04
0.05
0.060000000000000005
0.07
0.08
0.09
0.09999999999999999
0.10999999999999999
這樣運算結果就變得不精準
請問有沒有解決辦法?或是哪裡可以調整得精準一點?
如果我只想印出小數點後兩位,又該怎麼處理?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.224.127.94
※ 編輯: justaID 來自: 125.224.127.94 (08/15 13:00)
推
08/15 15:51, , 1F
08/15 15:51, 1F
→
08/15 15:51, , 2F
08/15 15:51, 2F
→
08/15 16:12, , 3F
08/15 16:12, 3F
→
08/15 16:13, , 4F
08/15 16:13, 4F
→
08/15 16:14, , 5F
08/15 16:14, 5F
→
08/15 17:09, , 6F
08/15 17:09, 6F
→
08/15 19:22, , 7F
08/15 19:22, 7F
→
08/18 17:00, , 8F
08/18 17:00, 8F
→
08/19 12:55, , 9F
08/19 12:55, 9F