我已经找到了程序的其余部分,我没有任何错误/警告,但现在我的问题是我从输入得到了错误的答案,但我不知道为什么。
相关代码:
int x;
float h;
printf("Enter a number:");
scanf("%d", &x);
h= (3x+2)/(2x-4);
printf("The answer is: %.2f \n", h);
它给了我一个向下舍入的数字。例如,如果我输入5,它将返回2.00,它应返回2.83。
请帮忙!
编辑:对不起,我有点累了。我确实把h的等式写成:h= (3*x+2)/(2*x-4);
答案 0 :(得分:3)
这不是有效的C代码。您无法使用隐式乘法(3x
必须为3 * x
等等。)
如果你解决了这个问题,你需要在float
中进行算术运算以获得更好的精度。最简单的方法是只创建一个文字float
:
const float h = (3.f * x + 2) / (2 * x - 4);
应该这样做。
答案 1 :(得分:0)
这是因为隐式转换。变量h是浮点型。但是/运算符看到它必须除以两个整数,因此在结果中返回一个整数,它被隐式转换为浮点数。如果您想要浮点除法,请尝试将两个操作数设置为/ floats
float x;
float h;
printf("Enter a number:");
scanf("%f", &x);
h= (3*x+2)/(2*x-4);
printf("The answer is: %.2f \n", h);
OR
int x;
float h;
printf("Enter a number:");
scanf("%d", &x);
h= ((float)3*x+2)/((float)2*x-4);
printf("The answer is: %.2f \n", h);