[英]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.