簡體   English   中英

如何在不使用 Math.abs 的情況下獲得 integer 的絕對值?

[英]How do I get the absolute value of an integer without using Math.abs?

如何在使用 math.abs 的情況下獲得數字的絕對值?

這是我到目前為止所擁有的:

function absVal(integer) {
    var abs = integer * integer;
    return abs^2;
}

您可以使用條件運算符一元否定運算符

function absVal(integer) {
  return integer < 0 ? -integer : integer;
}

你也可以使用>> (Sign-propagating right shift)

function absVal(integer) {
    return (integer ^ (integer >> 31)) - (integer >> 31);;
}

注意:這僅適用於整數

由於數字的絕對值是“數字從零到多遠”,因此負數可以“翻轉”為正數(如果您原諒我缺乏數學術語= P):

var abs = (integer < 0) ? (integer * -1) : integer;

或者,雖然我沒有對它進行基准測試,但是從零減去而不是乘以(即0 - integer )可能會更快。

遲到的回應,但我認為這是你想要完成的:

function absVal(integer) {
   return (integer**2)**.5;
}

它平方 integer 然后取平方根。 它將消除負面影響。

我們沒有理由不借用Java的實現

  function myabs(a) { return (a <= 0.0) ? 0.0 - a : a; } console.log(myabs(-9)); 

這是如何工作的:

  • 如果給定的數字小於或等於零
    • 從0中減去數字,結果將始終> 0
  • 否則返回數字(因為它> 0

檢查數字是否小於零! 如果是那么多了它-1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM