我制作了这个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>
答案 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来自的地方;)