如何在JavaScript中将浮点数转换为整数?

我想在JavaScript中将浮点数转换为整数。 实际上,我想知道如何同时进行标准转换:截断和舍入。 而且有效,而不是通过转换为字符串和解析。


#1楼

按位或运算符

可以使用按位或运算符截断浮点数,它既可以用于正数也可以用于负数:

function float2int (value) {
    return value | 0;
}

结果

float2int(3.1) == 3
float2int(-3.1) == -3
float2int(3.9) == 3
float2int(-3.9) == -3

性能比较?

我创建了一个JSPerf测试 ,用于比较以下两者之间的性能:

  • Math.floor(val)
  • val | 0 val | 0 按位
  • ~~val 按位
  • parseInt(val)

仅适用于正数。 在这种情况下,可以安全地使用按位运算以及Math.floor函数。

但是,如果您需要代码同时使用正数和负数 ,那么按位运算是最快的(或首选)。 另一个JSPerf测试进行了比较,很明显,由于附加的符号检查, Math现在是这四个中最慢的。

注意

如评论中所述,BITWISE运算符对带符号的32位整数进行运算,因此将转换大数,例如:

1234567890  | 0 => 1234567890
12345678901 | 0 => -539222987

#2楼

注意:您不能使用Math.floor()来代替截断,因为Math.floor(-3.1) = -4而不是-3

截断的正确替代是:

function truncate(value)
{
    if (value < 0) {
        return Math.ceil(value);
    }

    return Math.floor(value);
}

#3楼

在您的情况下,当您想要一个字符串结尾(以便插入逗号)时,也可以只使用Number.toFixed()函数,但是,它将执行舍入操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值