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 展开
#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 展开
1个回答
展开全部
精度不够
2.23456789123456789123456789 e 20
2.23456789123456770000
223456789123456760000.000000
第二个数是a输入后的打印结果,double支持不了这么多精度。不要输入精度这么高的就没有问题。
2.23456789123456789123456789 e 20
2.23456789123456770000
223456789123456760000.000000
第二个数是a输入后的打印结果,double支持不了这么多精度。不要输入精度这么高的就没有问题。
更多追问追答
追问
那有什么办法能输入这么多小数??不要用指针?
追答
能想到的有两个办法:
1、 如果你编程的平台的基础类型(指float,double),有long double,且这个类型的精度可以支持这么多精度,那么可以直接解决。我用VC++ 6是没有这种类型的
2、找一个函数库,能够支持这种精度处理。
平时遇到的编程精度要求从来没有过这样高的要求
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询