题解 | #数字取整# 为什么两次取反会得到整数以及其解法
数字取整
https://www.nowcoder.com/practice/1e45f1d1e1674e79807f82743f8b8f0a
{"html":"<!DOCTYPE html>\n<html>\n\n<head>\n <meta charset=\"UTF-8\">\n <style>\n /* 填写样式 */\n </style>\n</head>\n\n<body>\n <!-- 填写标签 -->\n <script type=\"text/javascript\">\n // 填写JavaScript\n function _int(value) {\n //1. 取反\n //return ~~value\n\n //2.Math.floor\n return Math.floor(value)\n //3.parseint\n\n}\n </script>\n</body>\n\n</html>","css":"","js":""}
~~
操作符的原理
- 按位取反操作符 ~:~ 操作符对一个数进行按位取反操作。按位取反会将每个二进制位的 0 变为 1,1 变为 0。例如,对于数字 5(二进制表示为 00000101),按位取反后的结果是 -6(二进制表示为 11111010)。
- 两次按位取反 ~~:第一次按位取反将数值转换为一个整数,并取反。第二次按位取反再将结果取反,恢复原来的整数部分。
为什么 ~~
会保留整数?
- 第一次按位取反:将数值转换为整数并取反。例如,5.7 经过第一次按位取反变为 -6。
- 第二次按位取反:将结果再取反,恢复原来的整数部分。例如,-6 经过第二次按位取反变为 5。
其他整数转换方法
除了 ~~
,JavaScript 还提供了其他几种将浮点数转换为整数的方法:
- Math.floor:向下取整。
- Math.ceil:向上取整。
- Math.round:四舍五入。
- Math.trunc:直接截断小数部分。