JavaScriptを実現するMath.round,Math.ceir,Math.flor関数機能CodeWarsは日記を打ちます.


CodeWars オンラインのプログラミングサイトです.インセンティブアップグレードのような仕組みです.あなたのレベルより高い問題の答えを見ることはできません.自分でテストを提出しない限り.提出することで様々な解法ランキングが見られます.自分の解法とランキングを比較することで、差を見つけ、能力を高めることができます.
    タイトルの説明は、Math.round,Math.ceir,Math.flor関数機能を元の生jsで実現します.負以外の値を入力します.定義されていないことを考慮しないで、NaNと文字列などです.
 consolone.log(Math.round(10.45));   //10 consolone.log(Math.flor(10.45));   //10   consolone.log(Math.ceeir(10.45));     //11
難しくないと思いますが、ここに書いてあるのは主にランキングの達人との対比です.主に小数点以下の1桁を判断するので、まず数字を文字列に変換し、小数点で2つの配列に分割してから、2番目の配列の値を数字に変換して5または0と比較して、数字の1位の値を変更します.
コードは以下の通りです
 Math.round = function(number) {
 var numarr = number.toString().split(".");      //     
 if (numarr.length == 1) { return Number.parseInt(numarr.join("")) ;};
 return  Number.parseInt(numarr[1].slice(0,1)) < 5 ? Number.parseInt(numarr[0]) : Number.parseInt(numarr[0]) +1; 
}
Math.floor = function(number){
  var numarr = number.toString().split(".");
      if (numarr.length == 1) { return Number.parseInt(numarr.join("")) ;};
 return   Number.parseInt(numarr[0]);
}
Math.ceil = function(number){
var numarr = number.toString().split(".");
if (numarr.length == 1) { return Number.parseInt(numarr.join("")) ;};
 return   Number.parseInt(numarr[1]) > 0 ? Number.parseInt(numarr[0]) +1 : Number.parseInt(numarr[0]) ;
}}
コードは大きくないですが、まだ長いです.
ランキング1位のコードをご覧ください.
Math.round = function(number) {
  return (number - parseInt(number) >= 0.5) ? parseInt(number) + 1 : parseInt(number) ;
};
Math.ceil = function(number) {
  return (parseInt(number) === number) ? number : parseInt(number) + 1;
};
Math.floor = function(number) {
  return parseInt(number);
};
自分と比べて最大の巧妙さは、パー秒Intの使用にあり、パー秒Intは整数部分だけを返します.
number-parseInt(number)は小数点以下の部分を得て、私のように、先に文字列を回転してから分割して数字に変えなくてもいいです.