我正在尝试在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 。
谁能解释一下我做错了什么?答案 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