看板 Visual_Basic 關於我們 聯絡資訊
dim t as double Private Sub Form_Load() For t = 0.8 To 1 Step 0.1 Print t (問題二改成Print a()) Next t End Sub ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 上面這個程式,為什麼他只會顯示0.8,0.9而沒有顯示1。 但是當範圍是0.7~1就全部都會顯示。 問題二:如果我再加一個function。 Function a() If t = 0.8 Then a = 1 ElseIf t = 0.9 Then a = 2 ElseIf t = 1 Then a = 3 End If End Function 主程式同問題一,但內容改成為呼叫此函數,則當宣告t為double 則會顯示a=1,a=2。而t宣告成single就只有顯示a=1=而已。 我的目的是藉由t值得到a 沒想到產生這些問題,新手發問麻煩各位了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.53.85 ※ 編輯: xu3jp68 來自: 140.114.53.85 (02/25 21:25)
hrs113355:浮點數誤差。 02/26 15:17
yaiba:0.8+0.1+0.1 <> 1 因為...0.1有可能是0.1000000000000000001 02/28 12:00
yaiba:如果你想用的只有0.8 0.9.....那不如用 100 90 80 70 再去除 02/28 12:01
albb0920:用double就好啦 (心) 02/29 07:36