繁体   English   中英

Math.round() 的替代方案

[英]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

一些测试用例:

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

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

例子:

// 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM