2017-07-08 292 views
-2

在JavaScript中,當值爲4.3時,我希望它四捨五入,如果值爲4.5或以上,則它舍入爲5.我希望所有這些都不使用Math.round()Math.round的替代方法()

+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

你也可以這樣做:

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

說明:

~~num 

是一個雙位或,實際上它,以便1.5 => 1

num-~~num 

獲取到下一個較小的整數的距離,所以例如刪除點後面一切5.4 => 0.4,5.6 => 0.6

一些測試用例:

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

+0

你能解釋一下這裏發生了什麼? – JapanGuy

+0

@JapanGuy Math.floor –

+0

這是一個很酷的方式!謝謝! – JapanGuy