为什么提取char数组中数字的时候,只能取到数字的前6位?
答案:1 悬赏:50 手机版
解决时间 2021-03-21 15:02
- 提问者网友:富士山上尢
- 2021-03-21 09:00
源代码如下,比如ToNum(“123.456841”),得到的却是123.456,后面的像是被截断了一样?为什么啊? #include #include 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;//返回转换得到的实数 }
最佳答案
- 五星知识达人网友:躲不过心动
- 2021-03-21 09:10
我上次也碰到这个问题 不过是直接输出 double 型数据 得到的都是有效数字为6 的数据 那是因为c++默认double类型的数据输出时 有效数字为6位 如果想输出得到想要得到的位数 需要自己制定格式 这个我就不多说了 哈 自己可以去试试 有机会的话 可以讨论一下double 数据类型在C/C++ 还有c# 还有matlab 中的存储结构哦 (用setprecision(n)命令 表示有效数字的位数).
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯