Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9653 / 13644 ツリー ←次へ | 前へ→

【26209】計算ミス? ほーりー 05/6/27(月) 14:40 質問[未読]
【26214】Re:計算ミス? Kein 05/6/27(月) 15:45 発言[未読]
【26215】Re:計算ミス? ほーりー 05/6/27(月) 16:46 お礼[未読]

【26209】計算ミス?
質問  ほーりー  - 05/6/27(月) 14:40 -

引用なし
パスワード
   どなたかお助けください。
エクセルのユーザーフォームで代金計算をしているのですが、
テキストボックスに入れた金額の計算結果が実際の金額と
合いません。なぜでしょうか。
ソースは次のような感じです。
手数料3.6%は小数点以下切り捨てです。


Private Sub recalc_daikin()
 Dim daikin As Long
 
 If UserForm1.tb_daikin = "" Then Exit Sub
 With UserForm1
  daikin = .tb_daikin.Value
  
  If .OptionButton1.Value = True Then
    .tb_tesuryo.Value = Int(daikin * 0.036)
  End If
 End With

end sub

テキストボックスtb_daikinに54000円と入れると1944円を
返すはずなのですが、なぜか1943円が返ってきます。
他の数値でも試してみましたが、合っていたり、1円少なかったり
という状況です。
よろしくお願いいたします。

【26214】Re:計算ミス?
発言  Kein  - 05/6/27(月) 15:45 -

引用なし
パスワード
   コンピューターは10進数でなく2進数で計算処理をするので、どうしても10進数を
基準とすると割り切れなくて、循環する数値が出てきてしまうのです。対処法としては
通貨形式の数値に変換したりしますが、全てのケースに対応は出来ないでしょうね。

【26215】Re:計算ミス?
お礼  ほーりー  - 05/6/27(月) 16:46 -

引用なし
パスワード
   ▼Kein さん:
>コンピューターは10進数でなく2進数で計算処理をするので、どうしても10進数を
>基準とすると割り切れなくて、循環する数値が出てきてしまうのです。対処法としては
>通貨形式の数値に変換したりしますが、全てのケースに対応は出来ないでしょうね。

Keinさん ありがとうございます。
ご指摘いただいて、ソースを修正したら思った結果が出ました。


.tb_tesuryo.Value = Int(daikin * 0.036)

修正↓
.tb_tesuryo.Value = Int(daikin * 36 / 1000)

頭で考えるとどちらも同じなのに・・・。不思議ですね。
ともあれ無事解決しました。ありがとうございました。

9653 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free