C语言 科学计数法问题

#include<stdio.h>#include<math.h>intmain(){doublea,c;charb;scanf("%lf%c%lf",&a,&b,&c)... #include <stdio.h>
#include <math.h>
int main()
{
double a,c;
char b;
scanf("%lf %c %lf",&a,&b,&c);
a=a*pow(10,c);
printf("%lf\n",a);
return 0;
}
输入 2.23456789123456789123456789
正确输出 223456789123456789123.45678900
实际输出 223456789123456761856.00000000
怎么改?求解!!!!!!!
输入错了

应该是 2.23456789123456789123456789 e 20
展开
 我来答
qmg1023
推荐于2017-10-02 · TA获得超过888个赞
知道小有建树答主
回答量:804
采纳率:0%
帮助的人:905万
展开全部
精度不够

2.23456789123456789123456789 e 20
2.23456789123456770000
223456789123456760000.000000

第二个数是a输入后的打印结果,double支持不了这么多精度。不要输入精度这么高的就没有问题。
更多追问追答
追问
那有什么办法能输入这么多小数??不要用指针?
追答
能想到的有两个办法:

1、 如果你编程的平台的基础类型(指float,double),有long double,且这个类型的精度可以支持这么多精度,那么可以直接解决。我用VC++ 6是没有这种类型的

2、找一个函数库,能够支持这种精度处理。

平时遇到的编程精度要求从来没有过这样高的要求
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式