1

私は固定長整数クラスを持っており、自分の型からネイティブ浮動小数点への変換とその逆の変換を実装する方法を知っていますが、どうすればよいかわからない特殊なケースがあります。

T符号付きタイプ名がであり、符号なしバージョンがであると仮定するとUT、タイプサイズは128-bit

(1)ネイティブの浮動小数点値は、何を表すか、TまたはUT表すことができるかよりも大きい/小さいですか?

(2)ネイティブの浮動小数点が表すことができる値、Tまたはそれよりも大きい/小さい?UT

切り捨てるか、例外をスローするか、結果をゼロに設定する必要がありますか?

ありがとうございました。

4

3 に答える 3

1

あなたの質問から、あなたが浮動小数点を完全に理解しているかどうかはわかりません。浮動小数点表現には大きさと精度の両方がありますが、あなたの質問は大きさについてのみ話しているのです。したがって、整数は浮動小数点で表現できる範囲内にある可能性がありますが、それでも浮動小数点として正確に表現できない場合があります。精度の低下を気にしますか?

私の選択は例外をスローすることですが、一方の数値がもう一方の形式で表現可能かどうかを事前にチェックするメソッドも含めることです。つまり、コードのユーザーに、特殊なケースをどのように処理するかを選択できるようにします。

于 2013-03-25T07:06:19.807 に答える
0

最善のアプローチは、最大値と最小値が相互に互換性のある整数浮動小数点ペアクラスを構築することです。

于 2013-03-25T06:27:47.363 に答える
0

浮動小数点値は、TまたはUTが表すことができる値よりも大きい/小さいですか?

になり得る。言語標準では、浮動小数点型が少なくとも10 37、または同等に2 122の値をサポートする必要があります。これは、最大128ビット整数値(符号付きまたは符号なし)に近い値です。

TまたはUTの値は、浮動小数点が表すことができる値よりも大きい/小さいですか?

になり得る。

IEEE-754単精度浮動小数点形式の最大有限値は2128弱ですが、IEEE -754倍精度形式の最大有限値は21024弱です

これらの答えは、最終的にはプラットフォームによって異なります。

切り捨てるか、例外をスローするか、結果をゼロに設定する必要がありますか?

それはあなた次第です。

于 2013-03-25T06:43:36.290 に答える