【发布时间】:2020-05-12 18:04:23
【问题描述】:
我正在为我开发一个 JavaScript 库。该库将帮助您将二进制数转换为十进制数。默认的 JavaScript 函数只能在点之前进行转换(整数)。但是这段代码也会转换浮点数(希望如此)。
为了测试我在 Firefox 上运行此代码时返回的代码,
此页面会降低您的浏览器速度。
& 谷歌浏览器只返回加载。
所以我想知道问题出在哪里?? 这是我的代码
var x = "101.11";
var r = 0;
var ra = 0;
for (var i = 0; i < x.length; ++i) {
if (x.charAt(i) == ".") {
var Ap = i;
}
}
for (var j = 0; j < (x.length - Ap); ++j) {
var a = x.charAt(j);
r = r + a * Math.pow(2, ((x.length - Ap - 1) - j));
}
for (var k = Ap + 1;
(x.length - Ap) < k; ++k) {
var b = x.charAt(k);
ra = ra + b * Math.pow(2, (Ap - k));
}
document.write(r);
if (ra <= 0) {
document.write("." + ra);
}
【问题讨论】:
-
这个条件永远不会满足:
(x.length - Ap) < k。你的意思是增加的部分是--k? -
是的,在第三个循环的第一次迭代中,
k = 4、x.length - Ap = 3和k只会增加。 -
ra = ra + b * Math.pow(2, (Ap - k));我想要这个等式中 (Ap-k) 的负值。
-
该表达式不会更改 for 循环条件或增量器的任何值。请注意,
k循环当前是无限的,您必须先修复它。 -
是的,我知道了。谢谢?????????
标签: javascript for-loop math browser binary