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

时间:2013-05-25 21:49:16

标签: javascript algorithm base

我制作了这个javascript程序,将基数为10的数字转换为另一个基数(小于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>

2 个答案:

答案 0 :(得分:4)

正如Eric Jablow评论的那样,JavaScript中的^是一个按位XOR运算符。您想要使用Math.pow(number, power)

但是,您的整个算法可以替换为内置的Number.toString。例如:

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

此外:

  • 这里有语法错误:

    b=a-1:
         ^ -- should be a semicolon, not a colon
    

    如果您在测试时保持浏览器控制台处于打开状态,则可以轻松发现此类错误。

  • 您的代码依赖于浏览器执行的一些魔术,它们会根据HTML元素ID属性自动创建变量。不要这样做,使用document.getElementById来获取元素引用。

答案 1 :(得分:1)

好的,这很简单。

pui是一个整数值。

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

然后你减少了pui,使其成为-1。

然后输出pui,这就是你的-1来自的地方;)