問題タブ [double-precision]
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.
c++ - ゼロの代わりに小さな数字?
私は(学習演習として)行列クラスを作成していて、逆関数をテストしているときに出くわして問題が発生しました。
私はそのように任意の行列を入力します:
そして逆数を計算するためにそれを手に入れました、そして私は正しい結果を得ました:
しかし、2つを掛け合わせて、次の単位行列を確実に取得しようとすると、次のようになります。
なぜこれらの結果が得られるのですか?いくつかの丸め誤差を理解できる奇妙な数値を乗算している場合は理解できますが、その合計は次のようになります。
これは明らかに0であり、5.111512e-017ではありません
手動で計算を行うようにした場合。例えば:
期待通り0になりますか?
すべての数値はdoubleとして表されます。これが私の乗算の過負荷です:
およびアクセス機能:
逆関数を見つける関数は次のとおりです。
java - Javaでの倍精度乗算の精度?
javaのdouble値に対する乗算演算子の保証精度はどれくらいですか?
たとえば、2.2 * 100 は 220.00000000000003 ですが、220 は倍数です。220.00000000000003 は 220 の次の double です。
javascript - Javascriptで二重数を非指数/短縮形に変換/表現する
たとえば、値が1.0883076389305e-311のJavascriptのdoubleがあります。拡張/高精度/スケール形式を計算するための「bc」ユーティリティを例として使用して、次の形式で表現したいと思います。
数値の拡張/高精度形式の文字列と同じ出力を生成するには、Javascript bigint ライブラリまたはコードが必要です。
ありがとう!
c++ - バイナリファイルからのC++の書き込みと読み取り
RAMを大量に消費するプログラムに対してディスクI/O操作を実行したい。私は倍精度の行列を使用し、バイトとしてディスクに書き込むのが最速の方法だと思います(倍精度を維持する必要があります)。
移植性でそれを行う方法は?
私はこのコード(ここ)を見つけましたが、作者はそれが移植性がないと言っています...
c++ - バイナリファイルからのdoubleの行列のC++書き込みおよび読み取り
私の前の質問の後に新しい問題があります:
マトリックスバイナリファイルI/Oを実行するようにコードを拡張し、単純な書き込みおよび読み取り操作をテストするときに、マトリックスの最初の行のみを取得しました...
私は自分のエラーを見つけることができませんでした、ここに新しいコードがあります:
よろしくお願いします
c++ - C++ の倍精度と丸め
次の問題があります。
double a = 6.005; double b = 5.995;
たとえば、ポイントの2桁後にdoubleの精度を設定したい
double c = a+b;// I would like to get 11.99 not 12.00
.
これどうやってするの?
floating-point - 表現の浮動小数点エラー?
この掛け算をするとき
0.94 * 8700
出力は
8177.999999999999
しかし、そうすべきだった
8178
私は java を使用していますが、このエラーが特定のプログラミング言語に関連しているとは思いません。私の質問は...なぜこれが起こったのですか??
また、同じエラーを引き起こす他の数字 (例として) は何ですか?
c++ - 出力精度が倍精度より高い
ParaView で処理/可視化する C++ プログラムからのデータを印刷していますが、浮動小数点数に問題があります。Paraview は Float32 と Float64 の両方のデータ型をサポートしています。Float64 は、典型的な制限 +/-1.7e +/- 308 の double と同等です。しかし、私のコードは 6.5e-318 のような数値を出力しています。これは、データの読み取り時に ParaView でエラーをスローしています。これらの小さい数値をゼロに丸めると、ParaView のエラーが消えることを確認しました。なぜこのような「高精度」出力が得られるのかはわかりません。おそらく、一部の数値が double よりも高い精度で格納されているためです。たとえば、次のコードは私のシステムで同じ動作を再現します。
私の出力は次のとおりです。
私のシステムは Mac OS X Snow Leopard で、上記を GCC 4.2 と GCC 4.6 でフラグ-m32
, -m64
and -ffloat-store
(これが役立つかどうかはわかりません) でテストしました。
実際、私にとっての出力は問題ありませんが、ParaView の場合はそうではありません。なぜこの違いがあるのか 知りたいだけです。重要な可能性のある浮動小数点数に関連するものを無視している可能性が非常に高いです。double のこの出力/数値動作についての手がかりを教えてください。
c++ - float と double の精度制限によるエラー
C++ では、次のコードを使用して、float と double の精度が限られているため、エラーの大きさの順序を計算します。
(ダブルの場合、行 1 と 2 でフロートをダブルと交換するだけです)
Unix システムで g++ を使用してこれをコンパイルして実行すると、結果は次のようになります。
ただし、Windows 7 で MinGW を使用してコンパイルして実行すると、結果は次のようになります。
これの理由は何ですか?
c++ - 精度ロングダブルダブルより悪い
を使用すると、を使用するlong double
よりも精度が低下しdouble
ます。
3.14159265358979323846264L
これはソースコードで書くのに良いlong double const
ですか、それとも私は他のものを追加する必要がありL
ますか?
編集私は問題を解決しました。アルゴリズムをより正確に変更します。