【发布时间】:2012-10-18 21:56:19
【问题描述】:
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),这里没有丢失(即最终字符串=原始字符串)是否正常?
【问题讨论】:
-
视情况而定。对于 17 位数字,可能没有损失。更重要的是,概率会增加(但总会有没有损失的值)。
-
@]ames:也许就像 unsigned char 一样,对于从 100 到 255 的值,即使
std::numeric_limit<char>::digits10返回 2 也不会丢失? -
对于那个特定的值:是的,这很正常。一般来说,请参阅 James Kanze 的评论。
-
查看损失的一种简单方法是输入一个包含所有
9s (example) 的数字。
标签: c++ double type-conversion