Math.round的替代方法()

问题描述:

在JavaScript中,当值为4.3时,我希望它四舍五入,如果值为4.5或以上,则它舍入为5.我希望所有这些都不使用Math.round()Math.round的替代方法()

+1

有什么不对Math.round()? – Greg

+0

其任务,我们必须做,而不使用math.round –

+0

这可以通过使用Math中的其他函数或使用字符串格式来实现。 –

你可以做到这一点

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));

你也可以这样做:

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