我正在尝试在 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。
谁能解释我做错了什么?
请注意,在这一行
(((x-1)/(253/3))-1))
您将整数值除以x - 1
整数值253 / 3
。这会将值截断为int
,这意味着您将整数幂提高到整数幂。
要解决此问题,请尝试将此表达式更改为
(((x-1)/(253.0 / 3.0))-1))
这现在将double
在表达式中使用 s,为您提供所需的值。
希望这可以帮助!
除此之外,整数不会给你数字的小数部分,所以像 3.5 这样的数字将使用整数减少到 3。解决这个双重问题是要走的路。换句话说 3 不同于 3.0