double类型小数位数的问题string s 156.358123double d atof(s.c_str())转换后为什么后面几位小数
double类型小数位数的问题
string s = "156.358123";
double d = atof(s.c_str());
转换后为什么后面几位小数被去掉了
怎样能全部转过来?
即确保把s整个转换成double型的
如何实现?
[解决办法]
atof应该是转换成float吧,试试strtod看看
不过这些我没用过,仅供参考
[解决办法]
你是怎么查看所谓的“后面几位小数被去掉”的?
[解决办法]
double有效数字在16位之间。楼主的例子用atof完全没有问题的,而且atof的返回值是double, 而不是字面float:
#include <stdlib.h>
double atof(const char *nptr);
只是printf("%f\n", ...)只打印6位小数,
#include <string>
using namespace std;
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
string s = "156.358123";
double d = atof(s.c_str());
printf("%.16f\n", d);
printf("%f\n", d);
return 0;
}
