Truncate/round在JavaScript中的整数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (9)

对于我正在编写的脚本,我需要显示一个已经四舍五入的数字,但不是小数或任何超过它的数字。我已经下定决心把它推到第三位,但我不知道如何去掉小数点以及所有的东西,因为它似乎没有substr像PHP那样的功能。

提问于
用户回答回答于

如果您有一个字符串,请将其解析为整数:

var num = '20.536';
var result = parseInt(num, 10); // 20

否则,ECMAScript 6提供Math.trunc了完全一致的截断,已经在Firefox 24+和Edge中提供:

var num = -2147483649.536;
var result = Math.trunc(num); // -2147483649

如果你不能依赖这一点,并且始终有一个正数,你当然可以使用Math.floor

var num = 20.536;
var result = Math.floor(num); // 20

最后,如果您在[-2147483648,2147483647]中有一个数字,则可以使用任何按位运算符截断为32位。| 0是常见的,>>> 0可以用来获得一个无符号的32位整数:

var num = -20.536;
var result = num | 0; // -20
用户回答回答于

trunc2考虑JavaScript如何以科学记数法表示非常小或非常大的浮点数,Travis Pessetto的答案和mozey的函数是唯一正确的答案。

例如,parseInt(-2.2043642353916286e-15)将不会正确解析该输入。而不是返回0它将返回-2

这是做到这一点的正确方法:

function truncate(number)
{
    return number > 0
         ? Math.floor(number)
         : Math.ceil(number);
}

扫码关注云+社区