[VBA ] 請問一個變數宣告的問題

看板Visual_Basic作者 (jeffsb)時間18年前 (2007/03/03 02:07), 編輯推噓7(708)
留言15則, 4人參與, 最新討論串1/2 (看更多)
↓以下是新手小弟寫的小程式↓ -------------------------------- Sub test() Dim i As Double, j As Double, k As Double Dim i1 As Double, i2 As Double, i3 As Double, j1 As Double, j2 As Double, j3 As Double, k1 As Double, k2 As Double, k3 As Double Worksheets("sheet1").Activate i1 = 3 i2 = 4 i3 = 0.02 j1 = 8 j2 = 9 j3 = 0.5 k1 = 1.5 k2 = 3 k3 = 0.5 For i = i1 To i2 Step i3 For j = j1 To j2 Step j3 For k = k1 To k2 Step k3 Worksheets("sheet1").Cells(1, 1).Value = i Worksheets("sheet1").Cells(1, 2).Value = j Worksheets("sheet1").Cells(1, 3).Value = k Next k Next j Next i End Sub -------------------------------- 我的問題是,我跑出來的結果一直卡在儲存格A1的值竟然是3.98而不是4? 所以請問各位先進這個問題是錯在哪?並請問該怎麼改呢? 此外,變數宣告我也曾經用過"single"可是儲存格A1的值更怪變成了3.99999 請問這是什麼原因呢? -- 麻煩大家指教了<(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.223.97.36

03/03 02:44, , 1F
大概又是浮點數精確度....
03/03 02:44, 1F

03/03 02:44, , 2F
前者也許3.98是3.98+ 所以加上0.02就超過4
03/03 02:44, 2F

03/03 02:45, , 3F
後者的3.98也許是3.98- 所以加上0.2還小於4 (變成4-)
03/03 02:45, 3F

03/03 02:45, , 4F
(上面的+ - 指比此數大一點點或小一點點)
03/03 02:45, 4F

03/03 02:46, , 5F
↖0.02 更正
03/03 02:46, 5F

03/03 07:04, , 6F
實際跑過一次,並沒有超過4,但是到4的時候會離開迴圈
03/03 07:04, 6F

03/03 07:05, , 7F
不知道為什麼等於4會離開迴圈
03/03 07:05, 7F

03/03 07:06, , 8F
試的結果浮點數才會有這個問題
03/03 07:06, 8F

03/03 07:07, , 9F
迴圈結束點=最大值-遞增值
03/03 07:07, 9F

03/03 07:31, , 10F
再試一次 不管用 for 還是 do loop 都一樣
03/03 07:31, 10F

03/03 07:32, , 11F
在迴圈外輸出i 結果為4 輸出 i<=4 結果為true
03/03 07:32, 11F

03/03 07:33, , 12F
False :x
03/03 07:33, 12F

03/03 07:33, , 13F
輸出i>4 結果為 true
03/03 07:33, 13F

03/03 09:01, , 14F
使用 i3=1/50 試試看
03/03 09:01, 14F

03/03 12:21, , 15F
用i=1/50跑出來是3.99999耶....
03/03 12:21, 15F
文章代碼(AID): #15w6VQcL (Visual_Basic)
文章代碼(AID): #15w6VQcL (Visual_Basic)