2012-06-19 18 views
6

C#には、decimal(System.Decimal構造体)という型があります。ボーランドC++ Builderのプログラムのいずれかの類似したタイプがありますC#の "decimal"のようなBorland C++ Builderに "タイプ"がありますか?

:それはいくつかのケースのためにfloatdoubleタイプよりも優れているかを示す情報を、私を発見しましたか?

+2

インテルには、IEEE 754-2008 10進浮動小数点演算仕様 – dash

+1

@を実装したライブラリhttp://software.intel.com/en-us/articles/intel-decimal-floating-point-math-library/があります。ダッシュ、あなたが提供したリンクとインテルのライブラリは有望そうです。高度の精度が必要な人にとっては、試してみる価値があります。 –

+1

旧式のBorland C++を使用する代わりに、C++ .NETに移行してSystem.Decimalを使用できますか?確かに、入力があれば.NETで小さなプログラムを作成することができます。 –

答えて

8

C#、System.Decimalタイプのdecimalタイプは、ベース2のエンコードではなく、ベース10として格納された浮動小数点数です。 floatおよびdoubleは、より典型的なベース2浮動小数点数です。すなわち、double+/- x * 2^yとして格納され、小数は+/- x * 10^yとして格納されます。だからこそ、金融データの一例として、通常はx * 10^-2で表される方が良いのです。 IEEE標準754(浮動小数点数学標準)は、この「小数浮動小数点」の数学を呼び出し、それぞれの32ビット版と64ビット版を定義しています。 C++で

、これらのタイプはstd::decimal名前空間に実装され、std::decimal::decimal32std::decimal::decimal64呼ばれ、<decimal>ヘッダです。 Borland C++ Builderにこのような型がある場合は、そこにあります。 GNUのC++ライブラリにはこのヘッダーが含まれていますが、AFAIKはまだ実際に標準の一部ではないため、BCBはそれを持っていない可能性があります。その場合は、サードパーティのライブラリを使用する必要があります。インテルの@Decimal Floating Pointライブラリの例はおそらく最もよく知られているライブラリですが、なんらかの理由でIEEE 754 DecimalのGoogle検索で他の人が出てくるはずです。

+1

クトゥルフとその両方のためのニースの答え+1 – dash

+0

@Cthulhuはどこですか? – kokbira

+1

@kokbiraマイケルのアバターは、時々クルトゥフとして知られているラブクラフトのフィクションからの、全般的にオールラウンドな素敵な男の写真に見えます。彼を除いて、彼は非常にいいです。 – dash

3

これらはあなたがDelphiで使用できるフロートタイプです:C++ビルダーで

single : 4 bytes (32bits) 
real : 6 bytes (48bits) 
double : 8 bytes (64bits) 
currency: 8 bytes (64bits) (this is probably what you're looking for) 
extended: 10 bytes (80bits) (maps to double when you compile to x64!) 

通貨の種類に建てられたDelphiのを模倣System::Currencyクラスがあるように思われます。たぶんそれを調べるのが助かります。

+0

興味深い。値を格納するためにbase-10を使用するかどうか知っていますか? '通貨'型の範囲はどうですか? – kokbira

2

このリンクを発見しましたBorland C++ Primitive Data types HTMLで表示します。

容量が10バイトのロング・ダブルタイプがあります。

このドキュメントは有益です。とにかくそれを読んでほしいかもしれません。

+0

非常に参考になりましたが、基底2の代わりに基底10に格納された浮動小数点値を使用して特定のプログラムの計算がより正確になるかどうかを調べる方法を探していました... – kokbira

+0

もっと正確な計算ができます例えば、「long double」を使用していますが、基数10の解を評価したいと思います... – kokbira

+0

Borlandのドキュメントを正しく理解していれば、基底2の代わりに基底10を使用します。 –

関連する問題