我想知道如何将字符串转换"1234.123456"
为double
or float
。我需要至少 3 位精度(即小数点后 3 位,无论该点之前的位数如何)。
问问题
920 次
2 回答
6
确切的值 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-14T08:56:23.397 回答
0
#include<stdlib.h>
int main()
{
double dnum = atof( "1234.123456" ) ;
printf ( "%f\n" , dnum ) ;
return 0 ;
}
于 2012-08-14T08:58:26.600 回答