#include <iostream>
using namespace std;
int main() {
float result = 50.0f;
float multiplier = 0.5f;
float fixed_multiplier = 1.0f - multiplier * 0.001f;
for (int i = 0; i < 1000; ++i) {
result *= fixed_multiplier;
}
cout << result << endl; // 30.322 -- want approximately 25
}
在1000次迭代之后,我希望result
等于multiplier*result
(result==25
)。如何找到修改乘数(在fixed_multiplier
中)以获得所需结果所需的内容?
答案 0 :(得分:5)
您的for
循环由此数学公式汇总:
result * fixed_multiplier ^ 1000 = result * multiplier
您可以solve this equation找到答案。
您可以使用pow
函数在C中获得相同的结果:
fixed_multiplier = pow(multiplier, 0.001);
答案 1 :(得分:2)
您有以下关系:
result_out = result * fixed_multiplier^1000
其中^
表示“权力”。简单的代数给你这个:
fixed_multiplier = (result_out / result) ^ (1/1000)