qqQ1157875619 发表于 2016-10-9 13:28:55

一个关于求圆的问题

#include <stdio.h>
#include <stdlib.h>

int main()
{
    double a=3.14159;
    double b;
    scanf("%f",&b);

    float c;
    c=a*b*b;
    printf("%8.2f",c);
    return 0;
}

出现这种情况


然后把double b;改成float b;就可以正常运行,为什么?double不是更大一点吗

musilintan 发表于 2016-10-9 13:37:05

用%lf试一下,这个输出double

zzzz76 发表于 2016-10-9 16:23:15

改为scanf("%lf", &b);
%f只能默认输入float类型
详细请参考scanf -- 格式化输入
http://bbs.fishc.com/thread-67391-1-1.html
(出处: 鱼C论坛)
{:10_279:}

徐皖辉 发表于 2016-10-11 00:01:01

我觉的是在c=a*b*b,由double强转到float的时候数据截断了,就是由大的转向小的了

杨润康Bla 发表于 2016-10-11 11:16:27

float单精度
double双精度
3.1415906使用float就会出现问题
页: [1]
查看完整版本: 一个关于求圆的问题