2012-02-19 19 views
43

JavaScriptの数値の絶対値を取得したいと思います。つまり、記号を削除します。 私は数学的にわかっています。数字を二乗して平方根をとることでこれを行うことができますが、これはひどく非効率的です。JavaScriptの数値の絶対値を取得

x = -25 
x = x * x 
x = sqrt(x) 

// x would now be 25 

数学的アプローチより効率的な数字の記号を単に削除する方法はありますか?

+5

'Math.abs(-25); // 25' – davin

+10

正規表現はまだ提案されていませんか? ;-)または 'jQuery.abs()'? –

+0

@DanWalmsley私はあなたを怒らせるつもりはありませんでした。名前を知らなくても(プログラマーのQ&Aサイトでは良いことではないが、それはダウンボックスを説明するものだと思う)、「javascript positive to negative number」などの検索が役に立ちます。 – kapa

答えて

87

数値のabsolute valueを取得するような意味ですか? Math.abs javascript関数は、この目的のために設計されています。ここで

var x = -25; 
x = Math.abs(x); // x would now be 25 

は、ドキュメントからいくつかのテストケースは以下のとおりです。

Math.abs('-1');  // 1 
Math.abs(-2);  // 2 
Math.abs(null);  // 0 
Math.abs("string"); // NaN 
Math.abs();   // NaN 
9

を探していると思うの絶対値を取得するために高速な方法であります数。これは、すべての言語に適用です:

(x^(x >> 31)) - (x >> 31); 
+12

これは32ビットの数値を前提としていますか? –

+3

2の補数ですか? –

+0

JavaScriptで64ビット(ダブル)番号を使用していませんか? –

5

あなたのJavaScriptは、あなたがこの記事をチェックアウトすることができボンネットの下に、この機能を実装する方法を参照してください。ここ

Blog Post

クロムのソースコードに基づいて実装されます。

function MathAbs(x) { 
    x = +x; 
    return (x > 0) ? x : 0 - x; 
} 
+0

これはクールですが、実際には質問に答えません。 –

+2

@AndreFigueiredo - 私はそれがかなりうまく答えていると思います。 'absx = Math.abs(x);を使うか、関数(' MathAbs')を作るか 'absx =(x> 0)を直接使うこともできます。 x:0 - x; '。おそらく同様の声明を答えに加えることが役に立つでしょう。 –

0

もう少し単純な方法もあります。

var abs = x => Math.sqrt(x*x) 
関連する問題