js題集26--工具問題-betterAddFloat

來源:互聯網
上載者:User

標籤:value   repeat   null   argument   sub   string   tip   實現   float   

1.實現add

add(123, "321") === "444";

add("1234567890.0987654321", "8765432109.9012345678") === "9999999999.9999999999";

add("1.2.3", 1.23); === NaN;

add(0.1, 0.0001) === "0.1001";

//your code 沒思路的下拉

 

 

 

1.點贊最高

var countDecimals = function (that) {

    if(Math.floor(that.valueOf()) === that.valueOf()) return 0;

    return that.toString().split(".")[1].length || 0;

}

 

var isFalse = function(that) {

    return that === false;

}

 

function add(){

    if (!Array.prototype.map.call(arguments, function(arg) { return isNaN(arg); }).every(isFalse)) return NaN;

    var factor = Math.max.apply(null, Array.prototype.map.call(arguments, function(arg) { return countDecimals(arg); }));

    var multiply = parseInt(1 + ‘0‘.repeat(factor), 10);

    var sum = 0;

    for (var i = 0; i < arguments.length; i++) {

        sum += arguments[i] * multiply;

    }

    return (sum / multiply).toString();

}

2.//writen by maosi for small white

function add(){

//implement 

 

var args=Array.prototype.slice.call(arguments);

  if(isNaN(args[0])||isNaN(args[1])) return NaN;

 

  var max=0;

  args.forEach(function(i){

  if(/[.]/g.test(i.toString())){

  var len=i.toString().split(".")[1].length;

  if(len>=max){max=len;}

  }

  });

  var ex=0;

 var r= args.reduce(function(p,c){

    if(max==0){

    var n1=[Number(c),0];

    }else{

    var n1=Number(c).toFixed(max).split(".");

    }

 

    p[0]=Number(p[0])+Number(n1[0]);

    p[1]=Number(p[1])+Number(n1[1]);

 

   if(p[1].toString().length>max){

  

      ex= p[1].toString().substr(0,1);

     p[1]=p[1].toString().substr(1);

     p[0]+=Number(ex);

   }

    return p

  },[0,0]);

  if(r[1]==0){

  return r[0].toString();

  }else{

   return r.join(".").replace(/[0]+$/g,"");

  }

 

}

js題集26--工具問題-betterAddFloat

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.