問題タブ [absolute-value]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sorting - int と float のリストを負の値と正の値で並べ替えますか?
int、float、またはその両方の不明な値のリストを昇順で並べ替えようとしています。つまり、[2,-1,1.0] は [-1,1.0,2] になります。残念ながら、sorted() 関数は、絶対値で降順にソートされているように見えるため、機能していないようです。何か案は?
c++ - std::abs関数で
std::abs()
関数はC++11のすべての算術型に対して明確に定義されており、近似の問題なく返され|x|
ますか?
奇妙なことは、g ++ 4.7 、、、、でstd::abs(char)
、std::abs(short int)
doubleを返すように見えることです(逆に:std::abs(int)
http ://en.cppreference.com/w/cpp/numeric/math/abs)。また、数値がdoubleにキャストされると、非常に大きな数値(のように)に対して近似誤差が発生する可能性があります。std::abs(long int)
std::abs(long long int)
-9223372036854775806LL = 2^63-3
それで、すべての算術タイプに対してstd::abs(x)
常に返されるという保証がありますか?|x|
編集:これはいくつかのテストを行うためのサンプルプログラムです
c# - C# Math.Abs 戻り値の操作 - 期待される出力が得られない
数値のデルタ値を見つけたい。
これでやってみました。Abs
関数を使用しました。整数に対しては正常に機能しています。
しかし、次のことをしようとすると、
戻ります3.0200000000000005
。しかし、私は期待してい 3.02
ます。
なんで?入手方法は3.02
?
java - n ビットの 2 の補数の絶対値の計算
このメソッドは、絶対値を取得しようとしている n ビットの 2 の補数と、その数値が得られるビット数を受け取ります。ここではいくつかの例を示します。
腹筋 (0x00001234, 16); // => 0x00001234
abs(0x00001234, 13); // => 0x00000DCC
したがって、最初の例では、0x00001234 が 0x00001234 であることがわかります。これは、16 ビットでは、それ自体であるのに十分な先行ゼロがあるためです。
ただし、2 番目の例では、13 ビットを使用すると 0x00001234 の符号ビットが 1 になるため、この 13 ビットの数値を正の数値に変換すると、0x00000DCC が得られます。
これまでのところうまくいくはずですが、場合によってはうまくいきません:/何が間違っているのか、どの方向に進むべきなのか、何か考えはありますか?
編集: また、言及するのを忘れていましたが、1 だけインクリメントしない限り、>>> や +、-、*、/ は使用できません。
matlab - Matlab: 可変ステップ ODE ソルバーの if ステートメントと abs() 関数
オンラインでこの投稿を読んでいたところ、「if ステートメント」と「abs()」関数を使用すると、MATLAB の可変ステップ ODE ソルバー (ODE45 など) に悪影響を与える可能性があると述べられていました。OP によると、時間ステップに大きな影響を与え (必要な時間ステップが低すぎる)、微分方程式が最終的に積分されたときに悪い結果が生じる可能性があります。これが本当かどうか、もしそうなら、なぜだろうと思っていました。また、修正ステップ ソルバーに頼らずに、この問題を軽減するにはどうすればよいでしょうか。私が何を意味するかについて、以下のコード例を示しました。
関数「dragcof」は次のように指定されます。
c++ - C++ で倍精度絶対値を高速化する
私は自分のコードをプロファイリングし、可能な限りすべてを最適化して、次のような関数にたどり着きました:
プログラムの実行中に何百万回も呼び出され、プロファイラーは、すべての時間の約 80% が の呼び出しに費やされていることを示していabs()
ます。
に置き換え
abs()
たfabs()
ところ、約 10% の速度向上が得られましたが、浮動小数点数については同じであり、常に使用する必要があると何度も聞いたので、あまり意味がありませんabs()
。それは真実ではありませんか、それとも何かが欠けていますか?パフォーマンスをさらに向上させることができる double の絶対値を評価する最も簡単な方法は何ですか?
それが問題になる場合はg++
、Linux X86_64 で使用します。