1

我正在尝试在 C 上实现以下公式

在此处输入图像描述

这是我的代码:

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

谁能解释我做错了什么?

4

2 回答 2

7

请注意,在这一行

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

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

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

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

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

希望这可以帮助!

于 2013-07-11T18:31:58.350 回答
0

除此之外,整数不会给你数字的小数部分,所以像 3.5 这样的数字将使用整数减少到 3。解决这个双重问题是要走的路。换句话说 3 不同于 3.0

于 2013-07-11T18:34:22.743 回答