在JavaScript中,当值为4.3时,我希望它四舍五入为4,如果值为4.5或更高,则四舍五入为5.我希望所有这些都不使用Math.round()
。
答案 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
一些测试用例:
答案 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)
你可以这样做
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;