3

を に変換しようとしboost::multiprecision::cpp_dec_float_xていboost::multiprecision::uintx_tます。したがって、基本的には、この変換が損失を出さないようにするために必要なメモリに関して、ブースト bigreal からブースト bigint に変換します。次の点を考慮してください。

boost::multiprecision::cpp_dec_float_100 myreal(100); /* bigreal */
boost::multiprecision::uint256_t myint; /* bigint */

メモリ割り当ての設計

最初から最後まで変換したい。これに必要なビット数を数え続けたと考えてください。256 ビット整数から始めて、0 から 2^256-1 まで格納できる float が必要です。これには何桁必要ですか?まさに256*log_10(2) ~= 77。したがって、100 桁の浮動小数点数で十分です。したがって、実数を 2^256 未満に保つと、それを 256 ビット整数に変換できます。

convert_to<>組み込み型でのみ使用でき、static_cast<>エラーが発生することを考慮して変換を行うにはどうすればよいですか(ブーストのドキュメントではそのようなコンテキストについて言及されていないことを考えると、これは予想されます)。ありがとうございました

データ損失を気にしない

データの損失は気にしません。私の目的のために、(bigreal 変数に) 整数 (小数部分なし) を格納します。だから私は大丈夫です!

4

1 に答える 1