Javascript 数学的备选方案。round()

Javascript 数学的备选方案。round(),javascript,html,rounding,Javascript,Html,Rounding,在JavaScript中,当值为4.3时,我希望将其四舍五入为4,如果值为4.5或更高,则将其四舍五入为5。我希望所有这些都不用使用Math.round()你可以这样做 函数RoundNum(数字){ var c=编号%1; 返回编号-c+(c/1+1.5>>1)*1 } console.log(RoundNum(2.456)); console.log(RoundNum(102.6)); console.log(RoundNum(203.515))您也可以这样做: round=num=>

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

你可以这样做

函数RoundNum(数字){
var c=编号%1;
返回编号-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
是双位OR,实际上它删除了点后面的所有内容,因此1.5=>1

num-~~num
获取到下一个较低整数的距离,例如5.4=>0.4,5.6=>0.6

一些测试用例:


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

例如:

//十进制数
设数=4.3;
//将其转换为字符串
让string=number.toString();
//切分
让数组=string.split('.');
//两个数字都要
//“+”符号将字符串再次转换为数字
设firstNumber=+数组[0];//4.
设secondNumber=+数组[1];//3.
//现在您可以通过检查第二个数字来对其进行取整
设四舍五入=第二个数<5?firstNumber:firstNumber+1;//4.
在一行代码中
let rounded=+number.toString().split('.')[1]<5+number.toString().split('.')[0]:+number.toString().split('.')[0]+1;

Math.round()有什么问题?这是一项我们必须在不使用Math的情况下完成的任务。round这可以通过使用数学中的其他函数或字符串格式来实现。请告诉我如何使用字符串格式,但我们必须在不使用Math的情况下完成functions@FarhanRamzan根据点(.)拆分您的号码,然后检查圆点(.)的后半部分。如果后半部值小于5,则保持前半部不变。如果下半场超过5,那么上半场+1。你能解释一下这里发生了什么吗?以前从未见过
~
哇,这太神奇了!非常感谢。您还可以使用
n | 0
而不是
~~n
来截断数字。请注意,只有当
n
不超过2^31-1时,截断才起作用。如果添加10354.6,截断将一直起作用,直到只有3位