如何在C ++中将字符串转换为具有6位精度的double?

时间:2012-08-14 08:31:12

标签: c++ floating-point double string-conversion

我想知道如何将"1234.123456"之类的字符串转换为doublefloat。 我需要至少3位数的精度(即小数点后3位数,不管点之前的位数)。

2 个答案:

答案 0 :(得分: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。它会 解释为了安全使用你需要知道的基本最低要求 机器浮点。

答案 1 :(得分:0)

#include<stdlib.h> 

int main()
{
    double dnum = atof( "1234.123456" ) ;

    printf ( "%f\n" , dnum ) ;

    return 0 ;
}