精华内容
下载资源
问答
  • 为什么不起作用long double?是printf符%lf错了吗?码:#include int main(void){float aboat = 32000.0;double abet = 5.32e-5;long double dip = 5.32e-5;printf("%f can be written %e\n", aboat,...

    我在Windows上将最新的gcc与Netbeans一起使用。为什么不起作用long double?是printf符%lf错了吗?

    码:

    #include

    int main(void)

    {

    float aboat = 32000.0;

    double abet = 5.32e-5;

    long double dip = 5.32e-5;

    printf("%f can be written %e\n", aboat, aboat);

    printf("%f can be written %e\n", abet, abet);

    printf("%lf can be written %le\n", dip, dip);

    return 0;

    }

    输出:

    32000.000000 can be written 3.200000e+004

    0.000053 can be written 5.320000e-005

    -1950228512509697500000000000000000000000000000000000000000000000000000000000000

    000000000000000000000000000000000000000000000000000000000000000000000000.000000

    can be written 2.725000e+002

    Press [Enter] to close the terminal ...

    展开全文
  • VS Code写C语言输出long double类型数据不正确的问题 在学习《C Primer Plus》一书时遇到一个例题 #include <stdio.h> int main(void) { float aboat = 32000.0; double abet = 2.14e9; long double dip =...

    VS Code写C语言输出long double类型数据不正确的问题


    在学习《C Primer Plus》一书时遇到一个例题

    #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("And it's %a in hexadecimal, powers of 2 notation\n", aboat);
        printf("%f can be written %e\n", abet, abet);
        printf("%Lf can be written %Le\n", dip, dip);
    
        return 0;
    }
    

    利用VS Code进行调试会发现变量dip的输出不正确。在确认是使用C99/C11,以及断点检查确认5.23e-5被赋值给变量dip之后,还是存在输出不正确的问题。
    在查阅相关资料之后,发现有使用Dev-C++也存在相同的问题,尝试使用别人给出的解决方案之后,问题立马被解决了。

    解决方案:
    在代码的最开始加上一行

    #define __USE_MINGW_ANSI_STDIO 1
    

    问题产生原因:
    VS Code默认使用了系统crt的printf函数。

    相关文章:知乎 - long double 怎样输出?

    展开全文
  • C语言中常用的小数有两种类型,分别是 float 或 double;float 称为单精度浮点型,double 称为双精度浮点型。...C语言中,输出double类型(双精度实型)以及float类型(单精度实型)时,默认输出6位小数(不足六位以 0 补...

    23ef3ae0c0a0e79aca5dc1ee5d7631b1.png

    C语言中常用的小数有两种类型,分别是 float 或 double;float 称为单精度浮点型,double 称为双精度浮点型。不像整数,小数没有那么多幺蛾子,小数的长度是固定的,float 始终占用4个字节,double 始终占用8个字节。

    c语言double类型默认输出几位小数?

    C语言中,输出double类型(双精度实型)以及float类型(单精度实型)时,默认输出6位小数(不足六位以 0 补齐,超过六位按四舍五入截断)。double a = 1;printf("%lf\n", a);

    输出会是:1.000000

    但是有时六位会显得很长,没必要。比如计算平均分,一到两位小数就足够了。可是有时六位又不够,需要更多位小数,比如计算高精度平方根。这时可以用printf的格式控制。如果要输出n位小数,那么可以用%.nlf的格式。其中n为数字。

    如要输出10位小数,那么printf("%.10lf\n", a);

    即可。

    推荐:《c语言教程》

    展开全文
  • 1.C语言double型格式指定符错误double是%lf你看看原来的a的位模式四个字节是XXXX如果输入是%lf那么就成了八个字节XXXXOOOO读入的时候是读入了后四位输出又用%f输出了前四位当然什么也没变 ==b2.用C语言如何实现 输入...

    1.C语言double型

    格式指定符错误

    double是%lf

    你看看原来的a的位模式

    四个字节是XXXX

    如果输入是%lf

    那么就成了八个字节

    XXXXOOOO

    读入的时候是读入了后四位

    输出又用%f输出了前四位

    当然什么也没变 ==b

    2.用C语言如何实现 输入一个double 类型的数后 使该数保留小数点后两

    上面的不是四舍五入好不?

    我写的这个可以..

    #include

    #include

    double rounding(double x,int n);

    void main()

    {

    double x,x1;

    int n;

    printf("请输入一个浮点数:\n");

    scanf("%lf",&x);

    printf("请输入给定的小数位:\n");

    scanf("%d",&n);

    x1=rounding(x,n);

    printf("圆整后的数为:\n%.*lf\n",n,x1);

    }

    double rounding(double x,int n)

    {

    double s;

    s=(int)(x*pow(10,n)+0.5)/pow(10,n);

    return s;

    }

    3.c语言编程,:求变一个程序,输入一个double型数据,经过运行后可

    很简单 我告诉你 把double的存入char 字符数组

    然后从后向前找 . 找到 . 再向前一位就是个位了

    /下面这个方法很节省内存和cpu///

    123

    个位数为:3。

    Press any key to continue

    123.44

    个位数为:3。

    Press any key to continue

    #include

    #include "string.h"

    main(void)

    {

    int nLen;

    char ge;

    char doub[50];

    gets(doub);

    nLen = strlen(doub);

    ge = doub[--nLen];

    for (;nLen>=0;nLen--)

    {

    if (doub[nLen]=='.')

    {

    ge = doub[nLen-1];

    break;

    }

    }

    printf("个位数为:%c。\n",ge);

    }

    6b7706fbf98d20a8

    转载请注明出处育才学习网 » c语言输入double型数据

    展开全文
  • c语言double类型数据的输入和输出

    千次阅读 2019-09-23 22:54:28
    double a;scanf("%f",&a); //应用scanf("%lf",&...而在输出double类型时却可以用%f,这是因为printf("%f",a);在执行时C自动将double型的参数转换成flaot型。 故double型的输入输出形式如下: ...
  • 当使用scanf对 double和float输入时: ...当使用printf对double和float输出时: %f 和 %lf 能够混用。 #include<stdio.h> int main() { double a; float b; scanf("%lf", &a); //若换成%f会无...
  • C语言中,输出double类型(双精度实型)以及float类型(单精度实型)时,默认输出6位小数(不足六位以 0 补齐,超过六位按四舍五入截断)。 double a = 1; printf("%lf\n", a); 输出会是: 1.000000 但是有时六位会...
  • 满意答案tanshow2014.02.23采纳率:52%等级:11已帮助:5895人#includetypedef struct...double score[3];}Table;void Input( Table *t ){if (t!=NULL){printf("Input the student's name:\n");scanf("%s",t->nam...
  • ...在C语言中: ... 1)用 scanf() 函数输入 double 类型的变量时,转换说明中的转换字符(占位符)只能用 lf,即%lf,写成 %f 无法正确输入double型数据;  2)用 printf() 函数输出 doubl
  • 小程序如下: #include <stdio.h> main() { double dValue = 2.0; printf("%d\t%f",dValue, dValue); } 结果答案凶残的输出:0 0.000000 为什么呢?
  • c语言是%if对应double,%f对应float。scanf():“%lf”用于double类型,“%f”用于float类型printf():“%f”既可用于double类型,也可用于float类型,意思是指“保留6位小数”。%f和%lf分别是float类型和double类型...
  • 对于初学者C语言常见的错误:1.中英文切换问题,所有代码应该在英文环境下输入,有时不小心在中文下输入,编译时出现一堆错误。(个人感觉辨别中英文是否出错最直观的就是,中文字符比较精致,英文支付看上去有点粗...
  • c语言double十六进制输出

    千次阅读 2017-03-14 13:18:53
    自己用%x printf输出double类型数据时,只有32位,用sizeof显示是64位的,后来看到6楼的回答,加上I64就可以了 “回复于: 2007-10-25 14:25:23 printf("%x\n", ch); 其中%x 表示无符号十六进制的整数, 多长...
  • double a; scanf("%f",&a); //应用scanf("%lf",&...而在输出double类型时却可以用%f,这是因为printf("%f",a);在执行时C自动将float型的参数转换成double型。 故double型的输入输出形式如下: double a...
  • 输出int , 用%d 输出float, 用%f 输出double,用 %lf 输出long int ,用%ld
  • 对于printf函数来说,输出一个double类型的参数,只需要%f即可,并不需要%lf,输出精度会在函数内处理,并不会丢失。 而对于scanf函数来说,读取一个double类型的参数,是需要%lf的修饰,如果使用%f读取,则它的精度...
  • c语言double型数据的输入

    千次阅读 2015-07-26 09:55:39
    今天练习在linux下编程C语言,...于是经过多番修改调试将错误确定到了double型数据的输入与输出上。于是专门写了一个代码检测错误原因。代码如下: #include int main() {  double in;  printf("请输入\n")
  • #include<stdio.h> int main() { double x = 256.141592654; int n = (int)x % 1000; //整数部分 while(n) //整数部分输出 { int temp = n % 10; n /= 10; printf("...
  • #include<stdio.h> int main (void) { float a0,a1,a2,a3; float a,b,c,end1,end2,end3; scanf("%f%f%f%f",&a0,&a1,&a2,&a3); scanf("%f%f",&a,&b);... while(b-a>=0.001) ... end1=a3*a*a*a+a2*a*a+a1*a+a0;...
  • C语言 输出INF问题

    万次阅读 2017-10-01 12:24:06
    本人在编写以下小程序,当输入数据n、m大于65536时,发现无论如何设置sum的数据类型,输出sum的值都为INF: double fun(int n,int m){ int i; double sum = 0; for(;n &lt;= m;n++){ sum += 1.0 / (n * ...
  • 输出函数 printf(“你要输出的内容”); %d - int %ld - long int ...%lf - double %x - 十六进制输出 int 或者long int 或者short int %o - 八进制输出 %s - 字符串 printf(“你要输出的内容对应的占位符”...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,662
精华内容 664
关键字:

c语言输出double

c语言 订阅