扫码关注官方订阅号
如何快速地把正数转换成1,负数转换成-1?
javascriptfunction f1(n) { return n === 0 ? 0 : n > 0 ? 1 : -1; }
javascript
function f1(n) { return n === 0 ? 0 : n > 0 ? 1 : -1; }
javascriptfunction f2(n) { return n === 0 ? 0 : n / Math.abs(n); }
function f2(n) { return n === 0 ? 0 : n / Math.abs(n); }
javascriptfunction f3(n) { return n === 0 ? 0 : ~~n.toString().replace(/(-?).*/, "$11") }
function f3(n) { return n === 0 ? 0 : ~~n.toString().replace(/(-?).*/, "$11") }
注意: 由于非0 除以 0 是 Infinity 或 -Infinity,而这两个值不会被判 false,所以下面的 f2_ex 就不对了,留下在这里作为警示。
Infinity
-Infinity
false
f2_ex
javascriptfunction f2_ex(n) { // not correct while n is a non-zero number return n / Math.abs(n) || 0 }
function f2_ex(n) { // not correct while n is a non-zero number return n / Math.abs(n) || 0 }
@bf 補充:
nodejs 參考值:運行 1000000 次,
f1: 10ms f2: 1ms f3: 402ms
f2_ex: 417ms
既然题主说的是 正数 or 负数 是不是应该考虑0? function f1(number){ if(+number){ throw new TypeError('只接受number 并且是大于0 or 小于0); } return number / Math.abs(number); }
function f(n) { return n < 2*n ? 1:-1; }
if 整数,then 转换为 1 if 负数,then 转换为 -1 那么问题来了,负整数转换为 1 还是 -1 呢?
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
注意: 由于非0 除以 0 是
Infinity
或-Infinity
,而这两个值不会被判false
,所以下面的f2_ex
就不对了,留下在这里作为警示。@bf 補充:
nodejs 參考值:運行 1000000 次,
f1: 10ms
f2: 1ms
f3: 402ms
function f(n) {
return n < 2*n ? 1:-1;
}
if 整数,then 转换为 1
if 负数,then 转换为 -1
那么问题来了,负整数转换为 1 还是 -1 呢?