南风知我意` 发表于 2022-8-30 17:25:14

求助,%f为什么不能换成%d呢?

#include <stdio.h>

int main()
{
    unsigned long long i;
    double result;

    printf("请输入一个整数:");
    scanf("%d",&i);

    result = pow(i,5);

    printf("%d的五次方是:%.1f\n",i,result);

    return 0;
}
这个是打印五次方,请问最后printf里的%.1f为什么不可以换成%d呢,%d不是用来输出十进制整数的吗?

lymww 发表于 2022-8-30 17:49:03

因为 %.1f   这里的.1就代表的保留小数点后一位的意思,那么肯定不能用%d了,除非你把 %.1f 直接改为%d

额外减小 发表于 2022-8-30 18:42:58

result 你定义为一个双精度浮点,当然不能用整型输出了

额外减小 发表于 2022-8-30 18:45:55

本帖最后由 额外减小 于 2022-8-30 19:00 编辑

但有一种方法。

#include <stdio.h>

int main()
{
    unsigned long long i;
    double result;

    printf("请输入一个整数:");
    scanf("%d",&i);

    result = pow(i,5);

    printf("%d的五次方是:%d\n",i,(int)result);

    return 0;
}
强行用整型输出
如果,你的result不是一个整数,那就会取整

题外话
我对你声明的数据类型非常不解。
为什么你的底数要用无符号长长整型来存,这不是有点浪费空间吗

另外!
你的<math.h>忘记了,pow是定义在这个库里的

南风知我意` 发表于 2022-8-30 19:33:37

非常感谢,我刚开始学习编程大概一周左右,有很多不理解的地方,现在我的问题已经解决啦,感谢你还指出了我没注意到的地方,非常感谢

额外减小 发表于 2022-8-30 23:16:36

南风知我意` 发表于 2022-8-30 19:33
非常感谢,我刚开始学习编程大概一周左右,有很多不理解的地方,现在我的问题已经解决啦,感谢你还指出了我 ...

一起努力{:10_256:}
页: [1]
查看完整版本: 求助,%f为什么不能换成%d呢?