プロが教える店舗&オフィスのセキュリティ対策術

VB.NETで開発しています
元々はC言語で開発してましたが、最近VB.NETをしています
で、以前誰かが作ったプログラムをデバッグしているんですが、その中に Double や Decimal が混じっています
どちらも 浮動小数点 と思うんですが 違いがいまいちわかりません
混じらせる利点ってないと思うんですが、どうなんでしょう?
有効桁数が違うとかだけだったら 簡単なんですが・・

A 回答 (4件)

Doubleは俗に言う倍精度浮動小数点数と同じです。


精度重視したのか、Longより大きい値を表現できることを意識したのか、10進数型(Decimal)を使った理由(作者の意図)はこちらも良くわかりません。
Decimalを含むデータ型の説明は下記にあります。
データ型をクリックで詳細説明を参照できます。
http://msdn.microsoft.com/ja-jp/library/47zceaw7 …
 
    • good
    • 0

Decimalの精度は28桁で精度が高いですが、範囲が狭い(最大値は7.9 × 10の28乗)です。


なお、小数点以下何桁まで正しいかは絶対値に寄って変わります。
また、10進数で表現できる数値は(精度の範囲内なら)誤差なく表せます。
(あらゆる誤差がないわけではありません。)

Decimalの演算パフォーマンスは悪いので、数値計算などには向きません。
10進数を誤差なく表現したい場合(財務計算とか)に使いましょう。

http://msdn.microsoft.com/ja-jp/library/xtba3z33 …



Decimalは基数が10の浮動小数点数ですが、
MSDNでは便宜のためか浮動小数点数型とは別扱いしてますね。
    • good
    • 1

なぜDoubleとDecimalが混じっているかは、処理を見てみないと分かりません。


ただ、
・Doubleは8バイトであるのに対し、Decimalは16バイトで数値を表す
・Doubleは2進数の小数で数値を表すのに対し、Decimalは整数値と小数点位置の組み合わせで数値を表す
・小数の計算はDouble型が高速
など、違いがあります。
    • good
    • 0

Decimalは小数点以下4桁で浮動小数点の誤差無く正しく計算します。


Doubleは普通に浮動小数点です。cのdoubleと同じ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A