【问题标题】:Browse is slowing down for a JavaScript codeJavaScript 代码的浏览速度变慢
【发布时间】: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) &lt; k。你的意思是增加的部分是--k
  • 是的,在第三个循环的第一次迭代中,k = 4x.length - Ap = 3k 只会增加。
  • ra = ra + b * Math.pow(2, (Ap - k));我想要这个等式中 (Ap-k) 的负值。
  • 该表达式不会更改 for 循环条件或增量器的任何值。请注意,k 循环当前是无限的,您必须先修复它。
  • 是的,我知道了。谢谢?????????

标签: javascript for-loop math browser binary


【解决方案1】:

这里是解决方案。我非常感谢你们。

/*

It's a dumb library for converting binary   fraction number into a desimal number.
Created by : Adib Rahman
Last update : 12:36 30/01/2020

*/

function print(something)
{
document.write(something);
}

var x = "010101010.111";
var r = 0;
var ra = 0;
for(var i=0;i<x.length;++i)
{
    if(x.charAt (i)== ".")
{
var Ap=i;
}
}

var beforePoint = (x.length-(x.length-Ap-1))-1;
var afterPoint = x.length-Ap-1;

for(var j=0;j<beforePoint;++j)
{
r = r+(x.charAt(j))*Math.pow(2,(beforePoint-j-1));
}

for(var k=Ap+1;k<x.length;++k)
{
var ra = ra+(x.charAt(k))*Math.pow(2,(Ap-k));
}
//Final Result
if(ra >=0)
{
print(r+ra);
}
else
{
print(r);
}

【讨论】:

    猜你喜欢
    • 2014-04-20
    • 2012-10-19
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    相关资源
    最近更新 更多