我想知道如何将像"1234.123456"
这样的字符串转换为double
或float
。我需要至少3位数的精度(即小数点后的3位数,而不管小数点之前的位数)。
发布于 2012-08-14 16:56:23
精确值1234.123456不能用任何常用的机器浮点格式表示。你所能做的就是选择你需要的精确度,并使用它。(在大多数现代机器上,double
的精度为16位。但这仍然不意味着所有16位数的值都是完全可表示的。)
至于转换,就像转换任何类型一样:
std::istringstream s( "1234.123456" );
double d;
s >> d;
并阅读http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html。它将解释为了安全地使用机器浮点而需要知道的最基本的基本知识。
发布于 2012-08-14 16:58:27
#include<stdlib.h>
int main()
{
double dnum = atof( "1234.123456" ) ;
printf ( "%f\n" , dnum ) ;
return 0 ;
}
https://stackoverflow.com/questions/11948540
复制相似问题