4
std::string str = "12345679012.124678";
double back = boost::lexical_cast<double>( str );
std::string str2 =boost::lexical_cast<std::string>( back );

//here str2 is equal to str

数値の仮数桁がstd::numeric_limit<double>::digits10(つまり15)より大きい場合でも、ここで損失がない(つまり、最終文字列=元の文字列)のは正常ですか?

4

1 に答える 1

0

はい、正常です。

std::numeric_limit<double>::digits10キャストが損失を伴わないことが保証されている最大桁数を指します。

これは、制限よりも広い数値を使用した損失を意味するのではなく、損失の可能性が高くなることを意味するだけです。

于 2012-10-30T16:46:41.530 に答える