1

我制作了这个 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>
4

2 回答 2

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用来获取元素引用。

于 2013-05-25T22:00:01.517 回答
1

好的,这很简单。

pui 是一个整数值。

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

然后你递减 pui,使其 -1。

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

于 2013-05-26T13:51:55.053 回答