我想知道如何将"1234.123456"
之类的字符串转换为double
或float
。
我需要至少3位数的精度(即小数点后3位数,不管点之前的位数)。
答案 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 ;
}