【发布时间】:2020-10-18 12:39:56
【问题描述】:
我终于重新开始构建我的函数,这是我在制作实际的 BPML 语言之前正在做的事情。在第 3 部分 - 数学中,我想做一些对数函数。
一开始我不知道对数函数是什么,但随着深入,我学会了它并做了这个:
float log_num(int num) {
int mult;
float result = 0;
for (int i = 0; ; i++) {
mult = 10 ^ i;
if (mult >= num) {
result = i;
break;
}
}
return result;
}
log_num 只支持int 和float 和double 会有各自的。
现在我遇到了这个函数的两个问题:
- 当我尝试运行它并使用
100作为函数中的数字时,结果应该是2.00,但它给了我1.00。 - 由于要返回的值是
float,如果它不是 10 的幂,我希望函数实际上给我不同的值。2 = 0.30102999566398119521373889472449就是一个例子。
问:如何解决问题 1 以及如何使函数按照问题 2 中的说明工作?
我想从头开始制作函数,而不是依赖其他函数。
【问题讨论】:
-
您希望如何在不使用所述数字的情况下计算数字的对数?
-
由于代码中唯一影响
result值的语句是float result = 0;和result = 1;,你认为这个函数怎么可能返回2? -
你认为
10 ^ i会做什么? -
^不是 C 中的指数运算符。它是 XOR 运算符。
标签: c function math floating-point