初学者请教,小数和指数输出问题,谢谢
大家好!我在学习c的课程,有道题是这样的:编写一个程序,读入一个浮点数,并分别以小数形式和指数形式打印。输出应如同下面的格式:the input is 21.290000 or 2.129000e+001
标准答案是:
PE 3-4
/* Programming Exercise 3-4 */
#include <stdio.h>
int main(void)
{
float num;
printf("Enter a floating-point value: ");
scanf("%f", &num);
printf("fixed-point notation: %f\n", num);
printf("exponential notation: %e\n", num);
return 0;
}
但输出结果是:
Enter a floating-point value: 21.290000
fixed-point notation: 21.290001 为什么呢?
exponential notation: 2.129000e+001
经过我的调整我的程序是这样的:
#include <stdio.h>
int main(void)
{
double f_i; //定义为double
scanf("%Lf",&f_i); //接受输入数字,我输入了一个21.290000,类型要用Lf,这个是lo
printf("the input is %Lf or %e",f_i,f_i); //用大写的L避免误认为是l E是指数型
return 0;
}
这样输出就是对的了,
所以不是很理解到底是我编的有问题还是。。。?double应该是%f才是,为什么用了不对,报错,一定要用%Lf
用的是code blocks 10.05 谢谢