問題タブ [floating-point-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倍に「追加」する方法
現在、C#とC++のアプリケーションを一致させようとしています。C ++側では、値がある場合、次のように言います。
私が使用するときsscanf
:
x
に等しくなり554.13269
ます。つまり、同じ値に丸められる場合でも、「追加の」有効数字があります。float
(このアプリケーションは、 7桁以上の有効数字を保持できる 別のタイプを使用していると思います。)
C++側を変更したくありません。別のC#アプリケーションでも同じことをしたいと思います。
たとえば、floatがある場合、23423.29
それをに変換したいと思います23423.289
。これはdouble
(C#ではfloat
有効数字が7桁以下であるため)、それをdouble
文字列に変換します。
私はこれを行う方法を見つけることができないようです。何か案は?または、独自の関数を作成するか、C#側から同じC ++関数を呼び出す必要がありますか?
c - 浮動小数点入力を整数に変換し、最大精度を維持する方法は?
入力として整数の行列を期待するアルゴリズムを使用する必要があります。私が持っている入力は実数値であるため、アルゴリズムに渡す前に入力を整数に変換したいと考えています。
入力を大きな定数でスケーリングしてから、整数に丸めます。これは良い解決策のように見えますが、使用する適切な定数をどのように決定すればよいでしょうか。特に、float 入力の範囲はケースごとに異なる可能性があるためです。他のアイデアも歓迎しますか?
c# - 浮動小数点演算のあいまいさ
重複の可能性:
C# の浮動小数点演算が不正確なのはなぜですか?
浮動小数点演算に偏りがあるのはなぜですか? 具体的な理由は?出力: 160 139
java - 浮動小数点の精度: JDBC、double、および DECIMAL、損失を回避するには?
JDBC インターフェースを使用して DB2 データベースからいくつかの行をコピーしています。私の心配は次のとおりです。一部の列は DECIMAL 15 として定義されています。DB2 の内部では、これらは 2 進化 10 進数として格納されています。Java で倍精度変数を介してこれらをコピーすると、精度がいくらか失われる可能性があります。プログラムは銀行で実行されるため、これは間違いなく問題になります。
それを処理する最良の方法は何ですか?
serialization - 浮動小数点数のシリアル化
浮動小数点数をシリアル化する方法についていくつかのアイデアを得るためにいくつかのフォーラムを検索していたところ、たまたま次のコードに出くわしました。
なぜこれを行う必要があるのか わかりません
frexp() は、0.5 (包括的) から 1 (排他的) までの値を返します。
例: frexp() は 0.81 を返します。
ldexp( 0.81, 24 ) --> 19.44 であり、 unit_32 に割り当てられると切り捨てられます。
この背後にあるロジックはわかりません。誰かが私のためにこれを明確にすることができますか?
floating-point - IEEE 24 ビット浮動小数点数の最小の正の値は?
IEEE-754 32 ビット float の正の最小値は2^−149
で、16 ビット float の正の最小値は です2^-14
。IEEE-754 が 24 ビット浮動小数点数を標準化した場合、最小の正の値は?
これがどこかに明示的に文書化されている場合は申し訳ありませんが、検索で見つけることができませんでした.
実用性について知りたい場合は、メモリ不足のシステムで使用するために、さまざまな精度の 4 つの浮動小数点値を 64 ビットに適合させるために使用されます。
c++ - /fp:strict と /fp:precise の違いは?
fp:precise ではなく、いつ fp:strict を使用しますか? 「より正確な」計算が必要で、丸め誤差を回避する場合は、前者を使用する方が良いですか? どちらかを使用する背後にあるヒューリスティックは何ですか?
.net - 10進数ベースの複雑な構造体。いい考えですか?
私は今夜家に帰り、マンデルブロ/ジュリアフラクタルジェネレーターを手に入れたいと思っています。これは以前にC++で行ったプロジェクトですが、今回はC#で回転させて、WinFormsアプリにしたり、マルチスレッドを使用して画像を生成したりできるようにします。
ただし、使用を検討したものの、松葉杖になってしまう可能性があることの1つは、組み込みのComplex構造体です。一見すると、見栄えがします。1つの構造体に組み込む必要のあるすべての操作。しかし、よく見ると、構造体がdoubleを使用していることがわかります。ダブルスには15-16有効数字しかありません。彼らの力は彼らの範囲です。複素平面上の(-2、-2)から(2,2)の範囲にのみ関心があるので、範囲には関心がありません。精度はありません。小数は28桁の有効数字です。
したがって、質問。ここに行く方法は何ですか?
- 組み込みのComplexタイプを使用します。結局のところ、それは単なる副次的なプロジェクトです。
- ダブルスの代わりに小数を使用して、自分のDecimalComplexタイプをロールします。良い「中道」のようです。私が必要とする計算は難しくなく(乗算と加算)、利用可能な精度のほぼ2倍になります。
- 壊れたために行きます。BigDecimalを実装し、BigIntegerを活用して小数点以下の桁数を自分で追跡し、それをUberComplex構造体に使用します。IIRCを最後にこれをいじったとき、私は同様のアイデアを使用しましたが、符号なしの64ビット長を使用しました。これにより、セット全体を360dpiでプロットする場合、おおよその領域のサーフェスが必要になるズームレベルになりました。太陽系の。私はおそらくそれよりももっとうまくやれるでしょう。
floating-point - これは、IEEE数学の丸め誤差を視覚的に表したものですか
Wolfram Alphaの場合:
2^24
これは、減算オペランドの桁が(32ビット浮動小数点)よりも大きい場合に、ソリューションで丸め誤差がどのように表示されるかを示していますか?
リンク:方程式のプロット
c++ - C++でfloat変数の算術演算を実行するとき、常にfloatリテラルを使用する必要がありますか?
次のような行を含む多くの C++ コードを目にします。
.0f
これらのリテラルの後にこれらは本当に必要ですか? これらを省略すると、数値の精度が失われますか?
次のような行がある場合にのみ必要だと思いました:
どこで を使うべき1.0f
ですか?