将以10为基数的数转换为任意基数的算法
Algorithm to transform a base 10 number to an any base number
我制作了这个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的来源;)
相关文章:
- ES6构造函数返回基类的实例
- 循环比赛位置算法
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- javascript扫雷器floodfill算法不能正常工作
- 可变大小的JavaScript字符串如何成为基元类型
- Jquery Datatables错误:无效的JSON基元:draw
- Node JS中的排名系统算法
- 查找仅适用于原始图像的图像放大算法的名称
- 在数组的 2/3 上调用自身的排序算法
- 我们可以使用任意的编程语言来动态化HTML页面吗
- 如何重写一个方法,并且仍然能够在重写的方法中使用基方法
- Luhn算法的实现
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- RegExp匹配任意字符串+8位数字
- AngularJS:使用维基百科API的web服务
- 检查是否存在任意控制器/操作
- 加速单纯形算法
- 使用JSONP访问维基百科API
- IE10+11:XSLT转换将任意CR/LF添加到XML中
- 将以10为基数的数转换为任意基数的算法