源代码如下,比如ToNum(“123.456841”),得到的却是123.456,后面的像是被截断了一样?为什么啊? #include<iostream> #include<string> using namespace std; double static ToNum(char *s) { int k=0; double x,y=1.0; int flag=1; char c; x=0.0; c=s[k];//取得当前符号 while(c>='0'&&c<='9'||c=='.')//为数字或小数点需要转换 { k=k+1;//扫描指针进1 if(c>='0'&&c<='9')//为数字符号 { if(flag==0)//转换小数点后的数值 { y=y*0.1; x=x+(c-48)*y; } else//转换整数部分的数值 { x=10*x+(c-48); } } else { flag=0;//为小数点‘.’ } c=s[k];//趣当前符号 } return x;//返回转换得到的实数 }
我上次也碰到这个问题 不过是直接输出 double 型数据 得到的都是有效数字为6 的数据 那是因为c++默认double类型的数据输出时 有效数字为6位 如果想输出得到想要得到的位数 需要自己制定格式 这个我就不多说了 哈 自己可以去试试 有机会的话 可以讨论一下double 数据类型在C/C++ 还有c# 还有matlab 中的存储结构哦 (用setprecision(n)命令 表示有效数字的位数).