[英]Alternative for Math.round()
在 JavaScript 中,当值为 4.3 时,我希望它四舍五入为 4,如果值为 4.5 或更高,它四舍五入为 5。我想要所有这些而不使用Math.round()
。
你也可以这样做:
round=num=>(num-~~num>=0.5?1:0)+~~num;
解释:
~~num
是双位或,实际上它删除了点后面的所有内容,所以 1.5 => 1
num-~~num
获取到下一个较小整数的距离,例如 5.4 => 0.4, 5.6 => 0.6
一些测试用例:
或者,您可以将数字转换为字符串,拆分它,并借助三元运算符对其进行舍入。
例子:
// 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;
你可以这样做
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));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.