0

我想知道如何将字符串转换"1234.123456"doubleor float。我需要至少 3 位精度(即小数点后 3 位,无论该点之前的位数如何)。

4

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