2017-03-11 12 views
-2

入力浮動小数点数は(-180,180]で、-180は含まれていませんが、180(Math.atan2から)を含むことができます。どうすれば最も近い10に丸めることができますが、-180が得られれば180になります。 if声明なしでそれを行う方法はありますか?JavaScriptでモジュラスを丸める方法は?

ありがとうございました

+1

if文を避ける必要がある特別な理由はありますか?これらの種類の計算には、周りの周りの角度には典型的にそれらがあります。 –

+1

数学的には、 'x = -180'を除くすべての' x 'に対して 'x'を返す' f(x) '関数を定義することができます。しかし問題は、実際には 'if'ステートメントに変換されるデルタ関数を使用する必要があるということです。たとえば、 'f(x)= x + \ delta(180 + x)'です。 – TheChetan

答えて

0

私はなぜあなたが文を避けるのかわかりません。そうでない場合は、それはちょうど:

function roundDegrees(input) { 
    var result = (Math.round(input/10)*10); 
    return result==-180?180:result; 
} 
+1

これは私にとって良い答えのようです。このタイトルは、OPがこれを解決するためにmod関数を使いたいかもしれないことを示しています。モジュロ計算のJavaScriptの%演算子は、負の数値で期待通りに動作しないので注意してください。 SOに関するこのトピックに関する他の質問と回答があります。これは参照されている1つのソースです:[The JavaScript Modulo Bug](http://javascript.about.com/od/problemsolving/a/modulobug.htm) –

1

これは動作しません。これを行う理由はありません。

function round(inp){ 
    var x = Math.round(inp/10)*10; 
    return x + !!!(x + 180)*360; 
} 
+0

ハハ、素敵なトリック、私はそれが好きです:) –

関連する問題