#include <stdio.h>
int main(void)
{
float aboat = 32000.0;
double abet = 2.14e9;
long double dip = 5.32e-5;
printf("%f can be written %e\n",aboat,aboat);
printf("%f can be woritten %e\n",abet,abet);
printf("%f can be written %e\n",dip,dip);
return 0;
}
上边是C primer plus里的一个程序,但是我做出来的输出结果却是错误的,请教高手这是怎么回事
我用的是code blocks10.05,我测试了一下,这个东西根本不支持long double 类型
#include <stdio.h>
int main(void)
{
long double big = 1;
printf("%llf",big);
return 0;
}
输出 -0.000000
书上给的就是%f,但是我测试了一下code blocks 根本不支持long double类型,给它赋任何值,换任何格式说明符都是错误输出,是GCC编译器的问题还是我64位win7的问题?
追答如果你用的gcc,那按书上的来肯定不能正常。 你试过我上面贴的吗?
我的也是gcc编译的,能正常。
如果不行的话,你可以试试 把%llf 和%lle 改成%Lf ,%Le, ll是linux下的写法。
用VC++ 6.0没问题了,是编译器的问题
本回答被提问者采纳C语言中用double还是溢出该怎么办,用long double时输出怎么表示_百度...
当数据精度要求不超过15位有效数字时,可以使用double;当数据精度要求不超过19位有效数字时,可以使用long double;如果有更高的精度要求,C语言并没有能直接解决这个问题的定义,应当使用数组,采用“高精度”算法。
一道简单的C语言题。有关double的溢出
printf("%.0f\\n",sum);溢出应该是发生在这里.改为 printf("%.0lf\\n",sum);双精度浮点输出
C语言long double,超过有效位数之后怎么办
貌似long double 和double一样,有效位数都是10位,你这句话是 输出的时候吧 有效位数不止10位输出的时候用printf("%.15f",a);来输出、谢谢采纳 望有帮助
C语言中long double的问题。
long double输出时候要用lf修饰 printf("x=%lf\\n",x);float ,double ,long double默认输出都是小数点后6位,double 和long double 想要输出多的话,可以用格式符来输出 printf("x=%.10lf\\n",x); 这样就能输出小数点后10位。
C语言double型数据输出有问题,请高手指点。
出现类型不匹配问题,double型的为%lf 而float为%f 所以才出现问题。include<stdio.h> int main(){ double x;scanf("%f",&x);printf("x=%f\\n",x);} }
一道简单的C语言题。有关double的溢出
double倒也不会溢出,而是会有精度误差。但你直接求阶乘的话int64可能溢出。这道题关键在于怎么求组合数C(N, a),其实可以不用求阶乘,也可以不溢出 有一个公式:C(N, a) = C(N-1, a-1) + C(N-1, a); (a != 0 && a != N)根据这个公式就可以不溢出递推求出很大的组合数了,...
在C语言编程中,是用长双精度变量总是输出失败
可能编译器本身不支持long double型变量。这种事对初学者影响不是很大 ,可以完全跳过去的。
C语言中long double的问题
一般来讲,long double不应当使用%f,这个错误是最严重的错误之一。(堆栈错误)此类错误可能导致系统的崩溃,程序不能正常运行等。有些C编译器没有实现long double,即long double就是double,具体的只能看你的情况了。如果需要做数值计算,最好使用MPFR之类的,这种浮点数计算只能在精度要求很低的情况下...
请问我的C语言代码计算结果为什么和教程不一样?
2561327494111820313这个数据太大了,足足有62位(是二进制的62位),而int类型最大只能存储32位的数据。使用int强行去计算这个值会导致数据溢出,导致结果与正确结果不相同,你可以试试int a = 2561327494111820313;printf("%d\\n", a);会得到一个远远小于这个值的数 所以你把long double换成int后才会出现...
c语言long double的问题
可能因为long Double型的特殊性,scanf语句的%lf格式可保证每位的意义与其类型对应,而其它语句不能。其实你用double就行了。