将以10为基数的数转换为任意基数的算法

Algorithm to transform a base 10 number to an any base number

本文关键字:任意基 算法 转换 将以      更新时间:2023-09-26

我制作了这个javascript程序来将十进制转换为另一个十进制(小于10)。我想知道为什么程序没有响应。

Number to transform:<input type="text" id="number" /><br />
Base to transform to:<input type="text" id="basen" /><br />
<input type="submit" onclick="transform()" value="Transform" />
<script>
function transform()
{
    var i=0;
    var a;
    var b;
    var c;
    var e;
    var t=0;
    var pui;
    while(Math.pow(basen.value,i) <= number.value)
    {
        i++;
    }
    var pui=i-1;
    while(pui>=0)
    {
        a=1;
        while(Math.pow(basen.value,pui)*a <= number.value-t)
        {
            a++;
        }
        b=a-1;
        e=10^pui;
        t+=b*e;
        pui--;
    }
    document.write(pui);
}
</script>

正如Eric Jablow所评论的,JavaScript中的^是位异或运算符。您想使用Math.pow(number, power)代替。

但是,您的整个算法可以被内置的Number.toString取代。例如:

(5).toString(4); // "11"

:

  • 这里有一个语法错误:

    b=a-1:
         ^ -- should be a semicolon, not a colon
    
  • 如果你在测试时保持浏览器控制台打开,这种错误很容易被发现。
  • 你的代码依赖于浏览器执行的一些魔法,它会根据HTML元素的ID属性自动创建变量。不要这样做,使用document.getElementById来获取元素引用。

好,这很简单。

pui是一个整数值。

最后一次进入第二个循环是在pui = 0时。

然后减去pui,使其为-1。

然后输出pui,这就是-1的来源;)