C数学计算结果与预期不符

4
我在一个程序中写了以下代码(这是一个较大函数的一部分,但以下是关键测试内容):
int test = 100 + (100 * (9 / 100));
sprintf (buf, "Test: %d\n\r", test);
display_to_pc (buf, player);

基本上,这意味着:
x = a + (a * (b / 100))

当a是一个给定的数字,b是一个百分比修饰符,x是结果(原始数值加上原始数值的百分比)... 我希望这样说得清楚。

它给了我:

Test: 100

我原以为我的脑子里的数学可能是错的,但我检查了几个计算器,甚至在我的IDE中使用了表达式求值器,它们都给出了预期结果109的第一个表达式。

有谁能告诉我我错过了什么吗?

非常感谢。 :)


只在整数内使用算术运算,你应该能够看到它是如何得出结果的,例如,想想 100 在整数意义下可以被 9 整除多少次,而不是分数。 - JB King
11个回答

0

您正在使用整数作为变量类型,因此最内层表达式(9/100)将得出0。然后下一个表达式将是100 * 0,即0,最后是100 + 0 ...

要获得所需的结果,请尝试改用浮点数:

float test = 100.0 +(100.0 *(9.0 / 100.0));

printf(“result:%0.2f \ n”,test);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接