問題タブ [mantissa]
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.
floating-point - C を使用する: 浮動小数点のコンポーネントのサイズを決定するにはどうすればよいですか?
アーキテクチャに依存しない方法で浮動小数点数のサイズ (ビット単位) と範囲を見つける方法についての提案を探しています。コードは、さまざまなフラグを使用してさまざまなプラットフォーム (AIX、Linux、HPUX、VMS、おそらく Windoze) でビルドできるため、結果は異なるはずです。符号は、私は 1 ビットしか見ていませんが、指数と仮数のサイズをどのように測定するのですか?
numerical-analysis - 特定のマシンで仮数の長さを見つける方法は?
特定のコンピューターで仮数桁数と単位の丸めを見つけたいと思っています。これらが何であるかは理解していますが、それらを見つける方法がわかりません-ただし、コンピューターによって異なる場合があることは理解しています.
エラーの分析など、数値解析の特定の側面を実行するには、この数値が必要です。
私が現在考えているのは、オーバーフローが発生するまで数値をゆっくりとインクリメントする小さな C++ プログラムを作成できるということですが、どのタイプの数値を使用すればよいかわかりません。
私は正しい軌道に乗っていますか?これを正確に計算するにはどうすればよいでしょうか。
python - ldexpとfrexpはPythonでどのように機能しますか?
Pythonのfrexp関数とldexp関数は、floatを仮数と指数に分割します。このプロセスが実際のfloat構造を公開するのか、それともPythonが高価な対数呼び出しを行う必要があるのかを誰かが知っていますか?
objective-c - Cocoa: 仮数部と指数部が 0 の NSDecimalNumber
数学的には、指数が 0 の数値はすべて 1 に等しいと想定されています (私の矯正数学研究で確信しています)。
しかし、このコードは 5 を生成します。
これは、将来の Cocoa バージョンで「修正」されないことに依存できる、コンピューター プログラミングの標準的なものですか?
floating-point - 浮動小数点仮数バイアス
この問題を解決する方法を知っている人はいますか?
浮動小数点 (表現は 14 ビット形式、バイアス 16 の指数に 5 ビット、正規化された 8 ビットの仮数、数値に 1 つの符号ビットを使用) を使用して、次の 2 つの計算を実行します。操作の順序に細心の注意を払ってください。
linux - さまざまな最適化レベルでのGCC処理フロートの比較
2つのfloat値を比較して、GCCの最適化で見られる問題を説明する簡単なコードがあります。再現可能な状況で、生成される出力が異なる理由を誰かが理解できるようになることを願っています。
まず、仮数でごくわずかにずれている可能性があるため、float値を==と比較するのは悪いことですが、私の例ではそうではありません。私が抱えている問題は、2つの要因に基づいて出力が変化することです。1)渡した最適化フラグ、および2)std::cout行のコメントを解除した場合。
GCCが生成するコードが-O2で異なる動作をするのはなぜですか?印刷のコメントを外すと、-O2でコンパイルされたコードが機能するのはなぜですか?
これが私がテストしているコードです:
linux / cygwinで-O0、-O1、および-O3(g ++ -O test.cpp)を使用してコンパイルすると、次の出力が得られます。
$ ./a.exe
old_val!= new_val
0,40c3126f
diff_val = -6.096
old_val == new_val
40c3126f、40c3126f
diff_val = 0
その出力は正しく、floatのビット(new_valとold_val)が同一であることがわかります。-O2フラグ(g ++ -O2 test.cpp)を使用してコンパイルすると、次のようになります。
$ ./a.exe
old_val!= new_val
0,40c3126f
diff_val = -6.096
old_val!= new_val
40c3126f、40c3126f
diff_val = 1.19209e-07
この出力は間違っていると思います。2つの値はビット単位で同じですが、それらを減算して==チェックすると、それらが異なることを示します。次に、std :: cout行のコメントを解除し、-O2フラグ(g ++ -O2 test.cpp)を使用して再構築すると、次のようになります。
$ ./a.exe
この作業を行うランダム
COUTold_val!= new_val
0,40c3126f
diff_val=-6.096
この作業を行うランダム
COUTold_val== new_val
40c3126f、40c3126f
diff_val = 1.19209e-07
これは、減算がまだわずかな違いを示している場合でも、そのold_val==new_valでは正しいです。
このコードは、フィートが20000ではなく2000の場合、-O2でも機能します。
コンパイルされたコードがこのように動作する理由を誰かが説明できますか?2ビットの同一のfloat値を==と比較できない理由を知りたいです。
gccバージョン3.4.4
vb.net - vb.net仮数とdoubleからの指数計算
VB.netのダブルから仮数と指数を取得する方法について誰かがアドバイスを提供できますか?文字列の解析とintへの変換を実行できることは知っていますが、これを実行できる数学的に同等の式を誰かが持っているのではないかと思いました。
どうもありがとう
java - JavaBigDecimalの仮数を取得します
非常に小さい数と非常に大きい数を使って簡単な計算をしたいと思います。私はBigDecimalから始めると思いました:
次に、仮数を取得するにはどうすればよいですか?54
またはどちらでも構い5.4
ません。
objective-c - NSDecimalNumberの小数部
NSDecimalNumberを使用して通貨の値を格納しています。数値が10未満の場合、数値の小数部分を先行ゼロのNSStringとして返す「cents」というメソッドを作成しようとしています。
そして、01、02などを文字列として99まで返すメソッドを作成しようとしています。この形式で仮数を文字列として返す方法がわからないようです。便利な方法が欠けているような気がしますが、ドキュメントをもう一度見てみると、何も飛び出していません。
c# - 仮数と指数を double に変換する
非常に高性能なアプリでは、CPU が long 演算を double よりも大幅に高速に計算できることがわかりました。ただし、私たちのシステムでは、小数点以下 9 桁を超える精度は必要ないと判断されました。したがって、すべての浮動小数点演算に long を使用し、9 ポイントの精度を理解しました。
ただし、システムの特定の部分では、double を使用した方が読みやすいため、より便利です。そのため、小数点以下 9 桁を想定した long 値を double に変換する必要があります。
long を単純に 10 で割って 9 乗するか、1 を 10 で割って 9 乗すると、double で不正確な表現が得られることがわかります。
それを解決するために、 を使用しMath.Round(value,9)
て正確な値を提供します。
ただし、Math.Round()
パフォーマンスが恐ろしく遅いです。
したがって、現時点では、仮数と指数を double のバイナリ形式に直接変換することを考えています。この方法では、丸めの必要がなくなるからです。
double のビットを調べて仮数と指数を取得する方法をオンラインで学習しましたが、それを逆にして仮数と指数を取得し、ビットを使用して double を作成する方法を理解するのは混乱します。
助言がありますか?