【发布时间】:2018-05-14 17:01:03
【问题描述】:
我想“手动”计算mathematical logarithm...
...其中 代表logarithmBase, 代表值。
一些例子(见Log calculator):
The base 2 logarithm of 10 is 3.3219280949
The base 5 logarithm of 15 is 1.6826061945
...
但是 - 我不想使用像 Math.ceil, Math.log, Math.abs, ... 这样已经实现的函数调用,因为我想要一个干净的原生解决方案,只处理 +-*/ 和一些循环。
这是我目前得到的代码:
function myLog(base, x) {
let result = 0;
do {
x /= base;
result ++;
} while (x >= base)
return result;
}
let x = 10,
base = 2;
let result = myLog(base, x)
console.log(result)
但上面的方法似乎不是计算 以 N 为底的对数的正确方法 - 所以任何关于如何修复此代码的帮助将不胜感激。
在此先感谢一百万乔纳斯。
【问题讨论】:
-
您可以:1 找出插入时最接近答案的两个整数。2 将两者中较小的一个放在一个文本/字符串变量。 3 递归地重复这两个到所需的小数点,将新数字附加到旧数字的末尾。
-
其实你在正确的轨道上。您只需要
result += precision然后降低精度,例如precision /= 10; -
@Sean 除了第一个步骤外,我可以按照您的所有步骤进行操作。 “找出最接近答案的两个整数”对你来说意味着什么。你介意向我解释一下这个说法吗?或者分享一些我能理解的伪代码?
:) -
@JonasW。你想让我降低精度 inside do-while 循环还是 afterward 然后为所有进动重复循环?你也介意分享一些
pseudo / js code吗? 编辑:添加 - 'precision'的起始值是多少? -
请注意,实现单个基数就足够了,因为其他基数中的值只是成比例的。
标签: javascript math numbers integer logarithm