問題タブ [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.
floating-point - 浮動小数点エラーを測定しますか?
たとえば、円周率を取り、1 から 1000 までの乱数を見つけた場合、円周率をその数値で割ります。次に、その数値を pi に掛けます。
それは浮動小数点エラーを引き起こすべきですか?
(そして、プロセッサで許容されるエラーは何ですか?)
floating-point - 浮動小数点エラーが発生しないようにTIオペレーティングシステムはどのようにコーディングされていますか?
グラフ電卓で浮動小数点エラーをチェックするためのテストを実行しましたが、48時間の完全で完全なランダム性の後、電卓は1桁の精度を失っていませんでした。
TIはこれをどのように実現しますか?
linux - gccdoubleprintfの精度-間違った出力
出力(および以下で予想される):
これはUbuntu11.10x64にあります(ただし、32ビット用にコンパイルする場合も同様です)。
私が解決しようとしている問題は、Windowsではコードとまったく同じように数値が出力されることです。移植性の問題のために、Windowsと同じように機能するように低レベルの書式設定(swprintf)を作成する必要があります。
c++ - float 値の精度が失われ、小数点以下が削除されるのはなぜですか? 以下のコード例
これまでフロートをあまり使用したことがなく、現在取り組んでいるプロジェクトではフロートが必要です。何年も前に学んだ奇妙な問題が発生していますが、なぜこれが起こるのか忘れてしまいました。
フロートを乗算または追加した後の結果は、本来あるべきものではありません。
これが私のコードです:
visual-studio - Visual Studioから、または.EXEから直接起動したときに、同じイメージで異なる出力を開く
私は、SURFアルゴリズムのChris Evans OpenSURF実装を使用して、オブジェクト認識用のアプリケーションを開発しました。いくつかの実験を行っていますが、IDEを介して、または.exeファイルをダブルクリックして直接アプリケーションを起動すると、アルゴリズムが適切に動作しないことに気付きました。.exeファイルが、IDEを介して起動するコードのバイナリコンパイル済みであることを確認しました。SURFアルゴリズムは決定論的であり、同じ入力で常に同じ出力を返す必要があるため、IDEまたは.EXEからアプリを起動する場合、浮動小数点の精度に関連する何かが異なるようです。いくつかの例。1列目と2列目は、画像から抽出されたポイントの数です。3番目の列は、この1番目と2番目の違いです。
EXE VS Diff
17340 17366 -26 Image001
4639 4631 8 Image002
3196 3189 7 Image003
10442 10441 1 Image004
1485 1477 8 Image005
5539 5555 -16 Image006
18102 18073 29 Image007
アルゴリズムとコードがまったく同じである場合、出力が異なる理由を誰でも教えてくれますか?
ありがとう
c++ - 定数代入の浮動小数点比較
double が等しいかどうかを比較する場合、浮動小数点計算でエラーが発生する可能性があるため、許容レベルを指定する必要があります。例えば:
ただし、計算を行わずに定数値を代入した場合でも、イプシロンをチェックする必要がありますか?
比較は==
十分ですか?それともやり直す必要がありfabs(x-y)<epsilon
ますか?割り当てにエラーを導入することは可能ですか? 私は偏執的すぎますか?
キャスト ( double x = static_cast<double>(100)
) はどうですか? 浮動小数点エラーも発生しますか?
LinuxでC++を使用していますが、言語によって異なる場合は、それも理解していただきたいです。
math - 分数バイナリ減算
次のバイナリ減算で結果が得られる理由を理解するのが困難です。違う答えが返ってきます。x が 0.00011001100110011001100 になるように 0.1-x を計算しようとしています。答えは 0.00000000000000000000001100[1100]...(1100 が繰り返され続ける) となるはずです。
私は正しくやっていないのですか?
c# - VB6 と C# から DLL を呼び出すと、倍精度でわずかに異なる結果が得られる
私はVB6内から何年も使用されてきたDLL(コードはありません)に独自のライブラリを持っています。VB6 コードを C# にアップグレードしようとしていますが、C# コードで VB6 の動作を正確に再現できるようにしたいと考えています。各環境から呼び出されたときに、DLL で行われた一部の計算の倍精度結果を正確に一致させるのに問題があります。
VB6では、次のようなものがあります(ファイルの読み取りと書き込みは、まったく同じ値が使用および生成されることを確認するためのものであることに注意してください):
C# では、次のようなものがあります。
入力が同じように読み取られることを確認しました (バイナリ値をファイルに書き直すことによって確認されます)。そのため、同一の倍精度数が DLL に供給されています。出力値は非常に似ていますが、同一ではありません (数値の最下位部分で値がずれている場合があり、小数点以下 15 ~ 17 桁のノイズがあり、ファイルにバイナリを書き出すと、それらが異なるバイナリ値であることを確認できます)。 . これらの値がまったく同じに計算されない理由、またはこれを修正またはデバッグする方法について誰かアドバイスがありますか?
c++ - ダブルスはオーバーフローに悩まされていますか?
ダブルまたはフロートでオーバーフロー(ラップアラウンド)することは可能ですか?x86またはx64ハードウェアで最大(または最小)値に達した場合はどうなりますか?