Excel VBA質問箱 IV

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

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


12260 / 13646 ツリー ←次へ | 前へ→

【11332】計算が合わないのですが PJ 04/3/5(金) 14:44 質問
【11336】Re:計算が合わないのですが 角田 04/3/5(金) 16:46 回答
【11340】Re:計算が合わないのですが ichinose 04/3/5(金) 20:15 発言
【11354】Re:計算が合わないのですが りん 04/3/6(土) 14:04 発言
【11478】ありがとうございます! PJ 04/3/9(火) 17:35 お礼

【11332】計算が合わないのですが
質問  PJ  - 04/3/5(金) 14:44 -

引用なし
パスワード
   またまたお世話になります。

実は、ある金額に対して、係数をかけて算出するということをしているのですが、
電卓でたたいてみると、1円合わないことがたびたび発生するんです。

Public kokyaku As Single 
Public harai As Single  で宣言をし、

 txthac.Value = WorksheetFunction.RoundDown((CCur(txtac.Value)) * kokyaku * harai, 0)

kokyaku,haraiには1.2とか0.9とか0.8という係数が入ります。

例えば2000×0.8×0.9=1440じゃないですか、
ところがVBAに計算させるとなぜか1439とでてきて、1円ちがうんです!!

何が問題なのでしょうか〜
どなたか教えてください・・・

【11336】Re:計算が合わないのですが
回答  角田 WEB  - 04/3/5(金) 16:46 -

引用なし
パスワード
   こんにちは。
小数誤差によるものでしょう。
↓の解説が参考になるでしょう。
http://pc21.nikkeibp.co.jp/special/gosa/

現在発売中の日経PC21にも、同様の特集が組まれています。

【11340】Re:計算が合わないのですが
発言  ichinose  - 04/3/5(金) 20:15 -

引用なし
パスワード
   角田 さん、PJさん、こんばんは。

>小数誤差によるものでしょう。
>↓の解説が参考になるでしょう。
>http://pc21.nikkeibp.co.jp/special/gosa/
誤差の原因は、ご紹介のして頂いたサイトを参考して頂くとして・・・、
PJさんの事例の場合、私は以下のようにしています。
'===========================================
Public kokyaku As Variant
Public harai As Variant
Sub test()
  kokyaku = CDec(0.9)
  harai = CDec(0.8)
  txthac.Value = _
     WorksheetFunction.RoundDown(CDec(txthac.Value) * kokyaku * harai, 0)
End Sub

小数は、要注意ですね!!

【11354】Re:計算が合わないのですが
発言  りん E-MAIL  - 04/3/6(土) 14:04 -

引用なし
パスワード
   こんにちわ。

V3の時にも同じような話題が。
http://www21.tok2.com/home/vbalab/bbs/c-board.cgi?cmd=ntr;tree=11504;id=Excel

V2の時にも。
1351からのツリーです(リンク失敗)

>小数は、要注意ですね!!
本当にね。10年たっても解決しないとは思いませんでした。「バグじゃなくて仕様」ってとこですかね。

【11478】ありがとうございます!
お礼  PJ  - 04/3/9(火) 17:35 -

引用なし
パスワード
   お礼が遅くなりました。

知らなかったです・・・。こんなことがあったなんて
Excelは万能だと思っていました。
日経PC21参考にさせていただきます!
ありがとうございました!

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