Math.round()的替代方案

时间:2017-07-08 11:39:06

标签: javascript html html5 rounding

在JavaScript中,当值为4.3时,我希望它四舍五入为4,如果值为4.5或更高,则四舍五入为5.我希望所有这些都不使用Math.round()

3 个答案:

答案 0 :(得分:3)

你也可以这样做:

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

说明:

~~num

是双按位OR,实际上它删除了点后面的所有内容,因此1.5 => 1

num-~~num

得到下一个较低整数的距离,例如5.4 => 0.4,5.6 => 0.6

一些测试用例:

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

答案 1 :(得分:0)

或者,您可以将数字转换为字符串、拆分并在三元运算符的帮助下对其进行舍入。

示例:

// Decimal number
let number = 4.3;

// Convert it into a string
let string = number.toString();

// Split the dot
let array = string.split('.');

// Get both numbers
// The '+' sign transforms the string into a number again
let firstNumber  = +array[0]; // 4
let secondNumber = +array[1]; // 3

// Now you can round it checking the second number
let rounded = secondNumber < 5 ? firstNumber : firstNumber + 1; // 4

一行代码

let rounded = +number.toString().split('.')[1] < 5 ? +number.toString().split('.')[0] : +number.toString().split('.')[0] + 1;

答案 2 :(得分:-1)

你可以这样做

&#13;
&#13;
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));
&#13;
&#13;
&#13;