IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:floor Function

共 1 篇相关文章

IT 累计浏览 3,930

神奇的两次按位非运算符

这篇讲的是JavaScript中一个相当冷门但巧妙的取整技巧:对一个数字连续使用两次按位非运算符 `~~`,其效果在大多数情况下等同于 `Math.floor`。 作者从James Padolsey的博客中引出了这个知识点,并直接进行了关键对比。虽然表面上看两者都是向下取整,但核心差异在于底层处理的数据范围。按位非运算符会将操作数先转换为32位整数,这意味着它对超过32位整数范围的大数和负数会产生与`Math.floor`不同的结果。例如,`~~1.99` 会得到 `1`,而 `~~3000000000.5` 会得到一个意想不到的负值,因为数值在按位运算中被截断了。`Math.floor` 则稳健地处理IEEE 754标准的64位浮点数。 因此,两者的适用场景泾渭分明。`Math.floor` 是通用、可预测的数学函数首选。而 `~~` 的优势则在于其极致的简洁和执行速度,它本质上是一个位运算,对于性能敏感且数值已知在安全范围内的场景(如数组索引、简单的像素坐标计算),可以成为一个非常高效的替代方案。这个小技巧虽然不常用,但它揭示了JavaScript在数字处理和类型转换上的一些底层特性,为理解语言灵活性提供了又一个有趣的视角。