为什么涉及指数的C计算会产生错误的答案?

时间:2013-07-11 18:28:45

标签: c math

我正在尝试在C

上实现以下公式

enter image description here

这是我的代码:

int function(int x){
   return pow(10, (((x-1)/(253/3))-1));
}

int main(void){
  int z = function(252);
  printf("z: %d\n",z); 
  return 0;
}

输出 10 。但是,计算器输出 94.6

谁能解释一下我做错了什么?

2 个答案:

答案 0 :(得分:7)

请注意,在此行中

(((x-1)/(253/3))-1))

您将整数值x - 1除以整数值253 / 3。这会将值截断为int,这意味着您将整数幂提升为整数幂。

要解决此问题,请尝试将此表达式更改为

(((x-1)/(253.0 / 3.0))-1))

现在这将在表达式中使用double,为您提供所需的值。

希望这有帮助!

答案 1 :(得分:0)

除此之外,整数不会给出数字的小数部分,因此像3.5这样的数字将使用整数减少到3。修复这个双重是要走的路。换句话说,3不同于3.0