4

私は独自の固定型整数型を作成しました。ライブラリは多くのコンパイラとプラットフォームで正常に動作します。解決すべき唯一の問題は、組み込みの浮動小数点型から私の型に変換することです。

浮動小数点型の仮数は小さいかもしれませんが、指数とともに大きな値になる可能性があるため、キャスト、、、またはと言うか、切り捨てを選択するfloatdoublelong double切り捨てlong longunsigned long long発生する可能性があります。

コンパイラがIEEE-754仕様を使用している場合、仮数と指数を抽出するのは簡単ですが、コンパイラが他の形式を使用している場合はどうでしょうか。

それで、私の質問:言語機能のみを使用して浮動小数点から完全な値を抽出できる一般的なアルゴリズムはありますか?

ありがとう

4

1 に答える 1

5

ここで、やや似たような質問に対する私の答えが役立つかもしれません。基礎となる形式がバイナリである場合、最大の整数型よりも仮数にビットがない場合、仮数と指数を損失なく抽出できることがほぼ保証されます。double frexp(double value, int *exp);double ldexp(double x, int exp);目的のために使用することができます。

もう1つのオプションはsprintf()、数字を使用%aしてすべての数字を取得し、テキスト表現を必要なものに手動で変換することです。

于 2013-02-24T23:24:09.233 に答える