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 回答