从字符串转换为double,其数字大于std :: numeric_limit <double> :: digits10 </double>

时间:2012-10-29 14:57:11

标签: c++ double type-conversion

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)?

1 个答案:

答案 0 :(得分:0)

是的,这是正常的。

std::numeric_limit<double>::digits10是指保证投票不受损的最大位数。

这并不意味着使用比限制更宽的数字而导致的损失,只意味着损失的可能性增加。