Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用JavaScript将数字四舍五入_Javascript_Typescript - Fatal编程技术网

用JavaScript将数字四舍五入

用JavaScript将数字四舍五入,javascript,typescript,Javascript,Typescript,我想把数字四舍五入如下: Value Expected 0,523% 1% 2,235% 2,5% -0,081% -0,5% -1,081% -1,5% 如何使用JavaScript实现这一点 解决方案: static round (num) { const abs = Math.abs(num); const sign = num < 0 ? -1 : 1; return sign * (abs % 1 > 0.5 ? Math.ceil(a

我想把数字四舍五入如下:

Value   Expected
0,523%  1%
2,235%  2,5%
-0,081% -0,5%
-1,081% -1,5%
如何使用JavaScript实现这一点

解决方案:

  static round (num) {
    const abs = Math.abs(num);
    const sign = num < 0 ? -1 : 1;
    return sign * (abs % 1 > 0.5 ? Math.ceil(abs) : Math.floor(abs) + 0.5) }
}

我的粒度值为0.00005

由于您只想将数字四舍五入或四舍五入,因此不能简单地使用
Math.round(number)

要做到这一点,最简单的方法是:

Math.round(number*2)/2
这样,您将始终拥有0.5或整数。

如果你想用另一种方式(ceil或floor)取整,你可以简单地用你想要的任何方式替换Math.round。

在这里展示你的作品你想将正数取整到最接近的.5,将负数取整到最接近的.5…?你的意思是,取整到离零最近的0.5的倍数吗?这似乎是一种不好的取整方式。您将在
0.001
-0.001
之间找到一个巨大的间隙。一个将一直旋转到
0.5
,另一个向下旋转到
-0.5
。这是一个巨大的差距。这个答案使用.5而不是3:这并不能产生所有想要的结果。我想让它更精确,但我们需要更多的信息从op。
Math.round(number*2)/2