BudingZY 发表于 2021-10-17 11:16:03

编程小白关于华氏度转摄氏度的小程序问题

本帖最后由 BudingZY 于 2021-10-17 12:28 编辑

代码如下,我的问题是:为什么定义i和result变量为float就可以正常输出,定义为double就不正常呢?

#include <stdio.h>

int main(){
   
    float i, result;
    printf("请输入华氏度:");
    scanf("%f", &i);
   
    result = (i - 32) * 5 / 9;
   
    printf("华氏度%.2f转换为摄氏度为:%.2f", i, result);

    return 0;
使用float定义变量结果就是正常的:
请输入华氏度:45
华氏度45.00转换为摄氏度为:7.22



如果使用double定义变量结果就不太对劲:
请输入华氏度:45
华氏度0.00转换为摄氏度为:-17.78





jhq999 发表于 2021-10-17 11:19:24

       
    double i, result;
    printf("请输入华氏度:");
    scanf("%lf", &i);
   
    result = (i - 32) * 5 / 9;
   
    printf("华氏度%.2lf转换为摄氏度为:%.2lf", i, result);

BudingZY 发表于 2021-10-17 11:29:17

jhq999 发表于 2021-10-17 11:19


请问为什么加一个l就可以了呢
double应该比float可以表示的范围要大吧
在printf上为什么还要加个long呢,有点不明白

jhq999 发表于 2021-10-17 11:33:35

本帖最后由 jhq999 于 2021-10-17 11:35 编辑

当然是类型不同,而且浮点double和float在内存里存储形式与int char 一类整数不一样

傻眼貓咪 发表于 2021-10-17 12:15:08

%lf 就是 double,%f 是 float

100gram 发表于 2021-10-17 13:23:31

你变量用的double类型的话 就需要用%lf
就像float用%f
int用%d
char用%c一样

划句顾 发表于 2021-10-17 13:48:03

double 就是要用%lf{:10_257:}
页: [1]
查看完整版本: 编程小白关于华氏度转摄氏度的小程序问题