作者LaDSi (jeffsb)
看板Visual_Basic
标题[VBA ] 请问一个变数宣告的问题
时间Sat Mar 3 02:07:21 2007
↓以下是新手小弟写的小程式↓
--------------------------------
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
1F:推 LPH66:大概又是浮点数精确度.... 03/03 02:44
2F:→ LPH66:前者也许3.98是3.98+ 所以加上0.02就超过4 03/03 02:44
3F:→ LPH66:後者的3.98也许是3.98- 所以加上0.2还小於4 (变成4-) 03/03 02:45
4F:→ LPH66:(上面的+ - 指比此数大一点点或小一点点) 03/03 02:45
5F:→ LPH66: ↖0.02 更正 03/03 02:46
6F:推 fumizuki:实际跑过一次,并没有超过4,但是到4的时候会离开回圈 03/03 07:04
7F:→ fumizuki:不知道为什麽等於4会离开回圈 03/03 07:05
8F:推 fumizuki:试的结果浮点数才会有这个问题 03/03 07:06
9F:推 fumizuki:回圈结束点=最大值-递增值 03/03 07:07
10F:推 fumizuki:再试一次 不管用 for 还是 do loop 都一样 03/03 07:31
11F:→ fumizuki:在回圈外输出i 结果为4 输出 i<=4 结果为true 03/03 07:32
12F:→ fumizuki: False :x 03/03 07:33
13F:→ fumizuki:输出i>4 结果为 true 03/03 07:33
14F:推 commiserate:使用 i3=1/50 试试看 03/03 09:01
15F:推 LaDSi:用i=1/50跑出来是3.99999耶.... 03/03 12:21