-PR-
解決
済み

通貨型 Or 10進型?

  • 暇なときにでも
  • 質問No.7815
  • 閲覧数3071
  • ありがとう数12
  • 気になる数0
  • 回答数4
  • コメント数0

VB6で事務計算(金額計算)を行う場合、誤差を
最小限に抑えられるデータ型は通貨型(Currency)
なのでしょうか、それとも10進型(Decimal)なの
でしょうか?
一般的にはどちらを使われているのでしょうか?
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2

 一般には、どのような型を使おうとも、誤差は出ません。
 誤差が出たりしたらマイクロソフトがひっくり返ってしまいますからね(笑) ですから、好きな方でいいです(笑)
 通貨型と10進型の違いは、取り扱える値の大きさの違いです。10進型は通貨型に比べて大きな値が扱えます。
 詳しくはVBのヘルプ「データ型の概要」をご参照のこと。
補足コメント
noname#420

VBのヘルプをまた何度か読み返していて疑問に思ったのですが、「/ 演算子」のヘルプに「/ 演算子」を使用した場合、一般に結果を浮動小数点数で返しますとあります.
例外で10 進型 (Decimal) と他のデータ型を含む除算の
場合、10進型で返すとあります。
ヘルプを見る限り、通貨型の除算の場合は浮動小数点
数で返され「通貨型の一時変数に代入することにより、期待する結果を得ることができます。」とVB4のヘルプ(文書番号: J029974)にはあります。

「/ 演算子」を使用する場合に、誤差を抑制できるデータ型は通貨型を使用するよりも10進型を使用した方がよいのでしょうか?
結局は、どちらの型を使用してもヘルプの対処方法
をとれば、どちらでもよいのでしょうか?

どなたかご存知ありませんか?
投稿日時 - 2000-09-07 02:19:22
お礼コメント
noname#420

回答有難うございます。
取り扱える値の大きさが違うだけで基本的には
誤差がないということですので安心しました。
投稿日時 - 0000-00-00 00:00:00
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル5

ベストアンサー率 33% (1/3)

アプリケーション開発で金額計算を行う場合、私の場合、通貨型(Currency)を使用します。ヘルプを見ても、「金額に関連する計算に役立つデータ型です」と言ってますしね。参考になれば幸いです。 ...続きを読む
アプリケーション開発で金額計算を行う場合、私の場合、通貨型(Currency)を使用します。ヘルプを見ても、「金額に関連する計算に役立つデータ型です」と言ってますしね。参考になれば幸いです。
お礼コメント
noname#420

たしかにヘルプをみると通貨型には
「金額に関連する計算に役立つデータ型です」
や「特に正確さが重要な金額を含む計算および
固定小数点数演算を行います」等の記述がありますね。
10 進型の変数の保存形式には「10 進型の変数は符号付き整数として保存されます。」という記述ぐらいしか
金額計算のデータ型選択の手がかりが無く不安でした。

回答有難うございました。
投稿日時 - 0000-00-00 00:00:00


  • 回答No.3
レベル11

ベストアンサー率 50% (173/345)

金額計算にはその名の通り「通過型(Currency)」を使用して下さい。 誤差を最小限に抑えるという問題ではなく、誤差は発生しません。 誤差が発生するのは、浮動小数点型です(Single, Double)。従って、これらは金額計算には絶対に使用してはいけません。 ...続きを読む
金額計算にはその名の通り「通過型(Currency)」を使用して下さい。
誤差を最小限に抑えるという問題ではなく、誤差は発生しません。
誤差が発生するのは、浮動小数点型です(Single, Double)。従って、これらは金額計算には絶対に使用してはいけません。
お礼コメント
noname#420

回答有難うございます。
やはり金額計算に浮動小数点数を使用するのは
良くないのですね。
うすうすと浮動小数点数を金額計算に使用しては
良くないのではと感じてはいたのですが、確認できて
良かったです。
投稿日時 - 0000-00-00 00:00:00
  • 回答No.4
レベル13

ベストアンサー率 33% (427/1283)

 極端な例ですが、以下の様なコードを実行してみて下さい。 -----ここから Dim c As Currency Dim cA As Currency Dim i As Integer Dim iA As Integer ' c = 10 / 3 i = 10 / 3 ' cA = c * 3 iA ...続きを読む
 極端な例ですが、以下の様なコードを実行してみて下さい。
-----ここから
Dim c As Currency
Dim cA As Currency
Dim i As Integer
Dim iA As Integer
'
c = 10 / 3
i = 10 / 3
'
cA = c * 3
iA = i * 3
-----ここまで
 実行後、cAとiAの値の違いを出してみれば解ると思います。
お礼コメント
noname#420

わざわざ例をあげて下さり有難うございます。
この例をDecimalでも試してみたのですが、
確かにどの固定小数点数を使用しても、
誤差は発生しますね。
単に10進数と2進数の関係の誤差ではなく、
10進数のみでの循環小数の例なのですね。
これは、計算方法に注意しなければいけない
と改めて思いました。
投稿日時 - 0000-00-00 00:00:00
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ