返回列表 发帖
我这个16进制转换为2进制中,用OUTNUM格式化的话就假死,后来没办法才用了CASE的

N版请进
附件: 您需要登录才可以下载或查看附件。没有帐号?加入 我们

TOP

我知道了,MT的用户群是普通用户,TW的用户群是电脑高手
此处广告位招租,一个美女手机号/周。

TOP

使用前 25x-26x,使用後 1x-3x

TOP

原帖由 sky5 于 2008-1-30 19:24 发表 http://bbs.ioage.com/cn/images/common/back.gif
n版的方法我亲自试过了,在多位的时候超慢的



呵呵.. 来一个猛的

var 长度=5;
var 变量=783;
var 变态的数=10000000;
var 格式化的数;
var date = new Date();
for (var i = 0; i < 100000; i++)
  //格式化的数 = (''+(变态的数+变量)).replace(/^\d{3}/,'');
//(new Array(len).join("0")+num).slice(-len);
格式化的数 = (''+(变态的数+变量)).substr(3);
alert(new Date() - date);
天下无不散之筵席.

世界之窗浏览器开发计划

TOP

杂草兄,这有一个很慢的网页,希望你可以测试一下你的加速器,呵呵

http://club.qingdaonews.com/cachedir/128/31/99/3199534_1.htm

TOP

n版的方法我亲自试过了,在多位的时候超慢的

TOP

天下无不散之筵席.

世界之窗浏览器开发计划

TOP


  1. a=5 //长度几位
  2. s='214' //待格式化的数或字符
  3. k=(new Array(a)).join('0').slice(s.length-a)+s
  4. alert(k)
复制代码

欢迎你们到51js.com来讨论js问题。

TOP

var s;

var date = new Date;
for (var i = 0; i < 100000; i++) s = outnum1(123, 5);
alert(new Date - date);  //986

date = new Date;
for (var i = 0; i < 100000; i++) s = outnum2(123, 5);
alert(new Date - date);  //1656

date = new Date;
for (var i = 0; i < 100000; i++) s = outnum3(123, "00000");
alert(new Date - date);  //1375

我错了,看来Math.pow和String.substring也是很慢的,这也许是IE的内伤:JS引擎太慢.

而你原来的那个函数,用这种执行10万次来测速的话,根本就死机了.

[ 本帖最后由 杂草 于 2008-1-30 13:04 编辑 ]

TOP

这样可是试试不出来的

我自己弄了一段进制转换的js,想用格式化输出,可是非常慢,而且假死

function car(carr){
var cdrr="";
//if (!carr){cdrr='请输入数字';};
for (i=0;i<carr.length;i++){
var m=carr.charAt(i);
//var n=parseInt(m,16).toString(2);
var nts=outnum(m.valueOf(),4);
cdrr+=nts+" ";
}
darr.value=cdrr;
//alert(carr);
}

[ 本帖最后由 sky5 于 2008-1-30 12:33 编辑 ]

TOP

//优化循环
function outnum1(n, ln)
{
    var sn = n.toString();
    for (var i = sn.length; i < ln; i++) sn = "0" + sn;
    return sn;
}
alert(outnum1(123, 5));

//如果是填充"0",可以用10的n次方代替n个"0"相加
function outnum2(n, ln)
{
    var sn = n.toString();
    var i = Math.max(sn.length, ln);
    sn = "" + Math.pow(10, ln) + sn;
    return sn.substring(sn.length - i);
}
alert(outnum2(123, 5));

//如果可以的话,直接用pattern,省去每次调用都要进行加"0"的运算
function outnum3(n, patt)
{
    var sn = n.toString();
    var i = Math.max(sn.length, patt.length);
    sn = patt + sn;
    return sn.substring(sn.length - i);
}
alert(outnum3(123, "00000"));

TOP

有假死现象哦,why

function outnum(n,ln){
var s=n.toString().length;
if (s<ln){
var z="";
for (i=0;i<eval(ln-s);i++){z+="0";}return z+n;}
else{return n;}
}

TOP

返回列表