[英]floating point division in C
我正在编写一个需要做一点算术的程序。
这是我到目前为止的内容:
#include <stdio.h>
int main(void){
double h, x, n;
printf("enter h > ");
scanf("%1f", &h);
printf("enter x > ");
scanf("%1f", &x);
/* here's where I believe I'm encountering an error */
n = x/h;
return 0;
}
因此,假设我将h = 0.01放入x = 0.25,我应该得到n = 0.25 / 0.01 = 25对吗?
我尝试过类型转换:
n = (float)x/(float)h;
但这行不通...
您已经在scanf调用中写入了%1f
(即数字1),但双%lf
格式的正确格式为%lf
(即小写L)。
因此,您的数字无法正确转换为双精度,也无法期望获得正确的结果。
该问题可能是由于scanf引起的。 我建议改用fgets。 但是尝试:
int main(void){
float h, x, n;
printf("enter h > ");
scanf("%f", &h);
getchar();
printf("enter x > ");
getchar();
scanf("%f", &x);
n = x/h;
return 0;
}
原因是您已将h,x,n声明为双精度型,然后将其分配给float.try在变量声明中使用float
#include <stdio.h>
int main(void){
float h, x, n;
printf("enter h > ");
scanf("%f", &h);
printf("enter x > ");
scanf("%f", &x);
n = x/h;
printf("%f",n);
return 0;
}
看我的评论 。 尝试读取double
输入时,需要指定l
修饰符。
#include <stdio.h>
inline int flush() {
return fflush(stdout);
}
int main() {
double x, h, n;
printf("enter h> ");
flush();
scanf("%lf", &h);
printf("enter x> ");
flush();
scanf("%lf", &x);
n = x / h;
printf("n: %lf\n", n);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.