让我说我有x = 12.345.在javascript中,哪个函数floatToInt(x)有最快的运行时间floatToInt(12.345)返回12?
我不是按位运算符的专家,但我经常看到一个模式,在比赛中由256k演示的程序员使用.而不是使用Math.floor()函数,使用双位NOT运算符~~(可能更快?).
像这样:
Math.floor(2.1); // 2
~~2.1 // 2
Run Code Online (Sandbox Code Playgroud)
搜索显示有更多模式使用相同的方式:
2.1 | 0 // 2
2.1 >> 0 // 2
Run Code Online (Sandbox Code Playgroud)
在开发控制台中玩这个时,我注意到了一个我不确定我完全理解的行为.
Math.floor(2e+21); // 2e+21
~~2e+21; // -1119879168
2e+21 | 0; // -1119879168
Run Code Online (Sandbox Code Playgroud)
引擎盖下发生了什么?
我知道PHP函数,floor()但这不是我想要的负数.
这是地板的工作原理
floor( 1234.567); // 1234
floor(-1234.567); // -1235
Run Code Online (Sandbox Code Playgroud)
这就是我要的
truncate( 1234.567); // 1234
truncate(-1234.567); // -1234
Run Code Online (Sandbox Code Playgroud)
是否有返回-1234的PHP函数?
我知道我可以这样做,但我希望有一个内置功能
$num = -1234.567;
echo $num >= 0 ? floor($num) : ceil($num);
Run Code Online (Sandbox Code Playgroud) 看过'~~'有人可以解释它的用途吗?
已完成谷歌搜索,没有任何回报.
它是一些数学运算符,但不知道它对数值的实际作用是什么?
我知道〜是一个按位NOT运算符,但如何将数字上的位反转两次使其作为Math.floor运行 在Javascript中做什么~~("双波浪")?描述了使用Math.floor与按位运算在Javascript中舍入数字之间的区别,但我感兴趣的是如何完全反转这两位来实现这一点.
谢谢