2017-07-08 14 views
-2

JavaScriptで値が4.3の場合は四捨五入し、値が4.5以上の場合は5に丸めます。Math.round()を使用せずにすべてを欲しいです。Math.round()の代替

round=num=>(num-~~num>=0.5?1:0)+~~num; 

説明:

~~num 
+1

恐らくMath.round(と間違っている何)? – Greg

+0

これは、math.roundを使用せずに行う必要があるタスクです。 –

+0

これは、Mathの他の関数を使用するか、文字列フォーマットを使用して行うことができます。 –

答えて

-1

あなたは、これは

function RoundNum(number){ 
 
    var c = number % 1; 
 
    return number-c+(c/1+1.5>>1)*1 
 
} 
 

 
console.log(RoundNum(2.456)); 
 
console.log(RoundNum(102.6)); 
 
console.log(RoundNum(203.515));

2

あなたもこれを行うことができます行うことができますは、実際にはそう1.5 => 1

num-~~num 

次に低い整数までの距離を取得するので、例えばポイントの背後にあるすべてのものを削除し、ダブルビット単位でOR 5.4 => 0.4、5.6 => 0.6

いくつかのテストケース:

http://jsbin.com/gulegoruxi/edit?console

+0

ここで何が起きているのか教えていただけますか?決して '~~'を見たことがない – JapanGuy

+0

@JapanGuy Math.floorのクールな方法 –

+0

これは素晴らしいです!ありがとうございました! – JapanGuy