これはおそらく以前に尋ねられた可能性がありますが、関連するものは見つかりませんでした。
特殊なクラスまたは整数の任意/固定量の構造体を介して、一種の任意/10進数演算を実装することは可能/パフォーマンスですか?
明確にさせてください。フロート(私が理解しているように)、仮数、指数、およびおそらく符号ビットを使用します。2 分の 1、4 分の 1、8 分の 1 などを表すことはできますが、10 分の 1 などはできません。
私が提案するのは次のようなものです: 整数の範囲で完全にカバーされる 10 の累乗までの値のみを保持して、数値をプレーンintまたはint64_t一連のこれらで表すようにします (つまり、32 ビットの int の場合、制限は 10^8-1 になります)。これは、計算を簡単にするためだけです。これに指数を追加します。これは、実数を得るために 10 の何乗する必要があるかを示します。
例: 125.36 は、int12536 に等しく、10 の累乗が -2 に等しいことで表されます。この数は実際には s と同じくらい多くintの特別な関数を必要とします。
別の例: 4,294,967,297 (2^32+1) は 2 つintの s を取り、1 つは 4 に等しく、もう 1 つは 294,967,297 に等しく、10 の累乗は 0 に等しくなります。
これは、より単純で高速な演算のためにすべてのメモリを捨ててよい考えですか? オーバーフローの部分についてはよく考えていませんが、おそらく計算int32_t+int32_t=int64_tするとそれが美しく解決されるでしょうか?