- PR -

繰り返し処理について

1
投稿者投稿内容
フィーバー
常連さん
会議室デビュー日: 2006/08/30
投稿数: 22
投稿日時: 2009-02-26 14:22
VB2005 で以下のコードを実行したところ、

Private Sub test()
Dim i As Double = 0.0001
For a As Double = 0.0001 To 1 Step 0.0001

i = i + 0.0001

Next
  MessageBox.Show(i)
 End Sub

結果が
1.00009999999991
となってしまいます。
単位は0.0001なので、この結果が理解できません。
何がいけないのでしょうか?
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2009-02-26 14:26
期待する値がほしいなら、double では駄目です。
コンピュータの実数演算と誤差に関して調べてみてください。

フィーバー
常連さん
会議室デビュー日: 2006/08/30
投稿数: 22
投稿日時: 2009-02-26 20:44
お返事ありがとう御座います。

誤差 vb net double で検索してところ

Decimal型を使えば良いことがわかりました。

かなり、常識的なことだったんですね。

ありがとう御座いました。
1

スキルアップ/キャリアアップ(JOB@IT)