- ベストアンサー
VB.net Double と Decimal の違い?
VB.NETで開発しています 元々はC言語で開発してましたが、最近VB.NETをしています で、以前誰かが作ったプログラムをデバッグしているんですが、その中に Double や Decimal が混じっています どちらも 浮動小数点 と思うんですが 違いがいまいちわかりません 混じらせる利点ってないと思うんですが、どうなんでしょう? 有効桁数が違うとかだけだったら 簡単なんですが・・
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Doubleは俗に言う倍精度浮動小数点数と同じです。 精度重視したのか、Longより大きい値を表現できることを意識したのか、10進数型(Decimal)を使った理由(作者の意図)はこちらも良くわかりません。 Decimalを含むデータ型の説明は下記にあります。 データ型をクリックで詳細説明を参照できます。 http://msdn.microsoft.com/ja-jp/library/47zceaw7.aspx
その他の回答 (3)
- Gab_km
- ベストアンサー率40% (20/50)
なぜDoubleとDecimalが混じっているかは、処理を見てみないと分かりません。 ただ、 ・Doubleは8バイトであるのに対し、Decimalは16バイトで数値を表す ・Doubleは2進数の小数で数値を表すのに対し、Decimalは整数値と小数点位置の組み合わせで数値を表す ・小数の計算はDouble型が高速 など、違いがあります。
- Werner
- ベストアンサー率53% (395/735)
Decimalの精度は28桁で精度が高いですが、範囲が狭い(最大値は7.9 × 10の28乗)です。 なお、小数点以下何桁まで正しいかは絶対値に寄って変わります。 また、10進数で表現できる数値は(精度の範囲内なら)誤差なく表せます。 (あらゆる誤差がないわけではありません。) Decimalの演算パフォーマンスは悪いので、数値計算などには向きません。 10進数を誤差なく表現したい場合(財務計算とか)に使いましょう。 http://msdn.microsoft.com/ja-jp/library/xtba3z33(VS.80).aspx Decimalは基数が10の浮動小数点数ですが、 MSDNでは便宜のためか浮動小数点数型とは別扱いしてますね。
- suzukikun
- ベストアンサー率28% (372/1325)
Decimalは小数点以下4桁で浮動小数点の誤差無く正しく計算します。 Doubleは普通に浮動小数点です。cのdoubleと同じ。