编程小白关于华氏度转摄氏度的小程序问题
本帖最后由 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
double i, result;
printf("请输入华氏度:");
scanf("%lf", &i);
result = (i - 32) * 5 / 9;
printf("华氏度%.2lf转换为摄氏度为:%.2lf", i, result); jhq999 发表于 2021-10-17 11:19
请问为什么加一个l就可以了呢
double应该比float可以表示的范围要大吧
在printf上为什么还要加个long呢,有点不明白 本帖最后由 jhq999 于 2021-10-17 11:35 编辑
当然是类型不同,而且浮点double和float在内存里存储形式与int char 一类整数不一样 %lf 就是 double,%f 是 float 你变量用的double类型的话 就需要用%lf
就像float用%f
int用%d
char用%c一样 double 就是要用%lf{:10_257:}
页:
[1]