私は物理的なシミュレーションを行っていますので、浮動小数点精度(16桁以上)が必要です。 Boost.Multiprecisionを使用していますが、何を試しても16桁以上の精度は得られません。浮動小数点型の浮動小数点数を使用している浮動小数点数は、浮動小数点数の上位16桁です。
#include <boost/math/constants/constants.hpp>
#include <boost/multiprecision/cpp_dec_float.hpp>
#include <iostream>
#include <limits>
using boost::multiprecision::cpp_dec_float_50;
void main()
{
cpp_dec_float_50 my_num= cpp_dec_float_50(0.123456789123456789123456789);
std::cout.precision(std::numeric_limits<cpp_dec_float_50>::digits10);
std::cout << my_num << std::endl;
}
出力は次のとおりです:私は、例えば、C++およびEclipseのコンパイラでシミュレーションを実行
0.12345678912345678379658409085095627233386039733887
^
しかし、それは次のようになります。
0.123456789123456789123456789
あなたが見ることができるように、16の後に数字が間違っています。どうして?