C语言中long double的问题。

#include<stdio.h>
main()
{
long double x;
x=2222222222.222226666L;
printf("x=%f\n",x);
}
x=2222222222.222227
Press any key to continue
问:Long double 是18~19位。书中说“在编写实型常量时,L表示该常量为long double长双精度类型”。
为什么结果不会是x=2222222222.222226666 呢?

    long double输出时候要用lf修饰    printf("x=%lf\n",x);

    float ,double ,long double默认输出都是小数点后6位,

    double 和long double 想要输出多的话,可以用格式符来输出

    printf("x=%.10lf\n",x);  这样就能输出小数点后10位。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-18
受到总体的精度限制,不可能总是能够完整地输出小数部分。
#include<stdio.h>
main()
{
long double x;
x=2222222.222226666L;
printf("x=%.9lf\n",x);
}追问

是哪些“总体的精度”?能详细的说说吗?谢谢。

第2个回答  2013-07-18
默认小数点后面输出的位数!

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语言中long double的问题
一般来讲,long double不应当使用%f,这个错误是最严重的错误之一。(堆栈错误)此类错误可能导致系统的崩溃,程序不能正常运行等。有些C编译器没有实现long double,即long double就是double,具体的只能看你的情况了。如果需要做数值计算,最好使用MPFR之类的,这种浮点数计算只能在精度要求很低的情况下...

C语言中关于long double 的问题
printf 把 long double 当作 double 处理。尽管它输出 16 位有效数字,但在内存中仍为 long double。编译器根本就不支持 long double。你最好换一个完美支持 ANSI C 标准的编译器。C 语言的默认浮点数类型就是 double,所以才会出现那么多把其他浮点数类型视为 double 的场面。不过我认为一般不需要把...

c语言long double的问题
可能因为long Double型的特殊性,scanf语句的%lf格式可保证每位的意义与其类型对应,而其它语句不能。其实你用double就行了。

C语言中 long double 该怎怎么用?
在C语言编程中,long double是一个特定的数据类型,专为需要更高精度浮点数运算而设计。要使用它,首要条件是确保你的编译器支持C99标准。验证方法是在代码中尝试定义一个long double类型的变量,如:long double a;如果编译过程没有报错,那么你的编译器就支持C99。如果不支持,可能需要更换或升级到支持...

C语言中如何正确地用scanf给long double变量赋值?
在 C 语言中,可以使用 %Lf 格式说明符来使用 scanf 函数为 long double 类型的变量赋值,示例如下:include <stdio.h>int main() { long double num;printf("请输入一个 long double 类型的数: ");scanf("%Lf", &num);printf("您输入的数是: %Lf\\n", num);return 0;} ...

C语言中 long double 该怎么用?
long double 是C99新出关键字,要使用,需要先确认编译器是否支持C99。\\x0d\\x0a可以在程序中定义\\x0d\\x0along double a;\\x0d\\x0a如果编译不出错,则支持。否则可能不支持。\\x0d\\x0a支持情况下,可以如上进行定义,赋值运算操作与其它基本类型相同。\\x0d\\x0a输入输出时,使用格式字符%llf...

C语言中long double型用%什么?
long double类型并不是C语言的原始标准中就有的,而是从C99版本开始引入的,它的精度要求至少要达到double类型的水平。尽管如此,不同编译器对其支持和实现可能存在差异,例如占用的字节数可能为8字节、10字节、12字节或16字节。当你使用printf等printf家族函数时,要确保使用%Lf来确保long double的正确输出...

C语言中想输出double和long double型用%什么?
在C语言中,输出`double`和`long double`型数据,使用控制字符`%lf`和`%Lf`。`lf`用于输出`double`,`Lf`用于输出`long double`。例如:`printf("%lf", yourDoubleVariable);`可以用来输出`double`型变量。同样,`printf("%Lf", yourLongDoubleVariable);`可以用来输出`long double`型变量。控制...

C语言long double的问题
可能因为long Double型的特殊性,scanf语句的%lf格式可保证每位的意义与其类型对应,而其它语句不能。其实你用double就行了。

相似回答