問題タブ [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.
precision - 精度の低下を避けるための最適なアルゴリズムは?
私が受けた最近の宿題では、コンピューターで実行すると精度が失われる可能性のある式を取り上げ、この損失を回避するように変更するように求められました。
残念ながら、これを行うための指示はあまり明確にされていません。実行されているさまざまな例を見て、これを行う特定の方法があることを知っています: テイラー級数を使用する、平方根が含まれる場合は共役を使用する、または 2 つの分数が減算されているときに共通の分母を見つける.
ただし、精度の低下がいつ発生するかを正確に把握するのに苦労しています。これまでのところ、私が確実に知っている唯一のことは、ほぼ同じである 2 つの数値を減算すると、上位の桁が有効であるため精度が失われ、四捨五入によってそれらが失われるということです。
私の質問は、私が探すべき他の一般的な状況は何ですか、そしてそれらにアプローチするための「良い」方法と考えられるものは何ですか?
たとえば、ここに 1 つの問題があります。
これらの 3 つの選択肢のうち、これを評価するための最良のアルゴリズムと最悪のアルゴリズムは何ですか?
x がゼロに近い場合、tan(x) と sin(x) はほぼ同じになることがわかりました。問題を解決するために、これらのアルゴリズムのいずれかがどのように、またはなぜ優れているか、または劣っているのか理解できません。
javascript - JavaScript 64 ビット数値精度
JavaScript で 53 ビット精度よりも高い数値を表す方法はありますか? つまり、64 ビット精度の数値を表す方法はありますか?
64 ビット数値の各ビットが何かを表すロジックを実装しようとしています。2^53 よりも高いビットを設定しようとすると、下位ビットが失われます。
これを達成するためにカスタムライブラリまたは何かを実装する方法はありますか?
sql - 整数を使用し、乗算を要求するのか、データ型として小数を使用するのか-あなたはどう思いますか?
これについてどう思いますか?タブ区切りのテキスト形式の新しいデータの統合に取り組んでおり、すべての小数列は単一の整数として保持されます。小数を決定するには、数値に.01を掛ける必要があります。これは、パーセンテージ、重量、価格情報などに対して行われます。たとえば、アイテムの価格は3259
データファイルのように表され、それを表示する場合は、「実際の」量を取得するためにそれを乗算する必要があり32.59
ます。
これは良い考えですか、悪い考えですか?データ構造をベンダーが提供するものと同じに保つ必要がありますか、それともデータベース列を真の10進数にし、SSISまたはある種のETLプロセスを使用して、整数列を10進数に自動的に乗算する必要がありますか?この時点では、ORMとストアドプロシージャのどちらを使用するのか、またはデータを取得する対象を決定していないため、長期的に考えて、どちらのアプローチを使用するかを決定しようとしています。また、DTOなどのコードでこれを簡単に処理することもできます。
しかし、それはクラスの側で余分で不必要な作業のように思えます。データは定期的に更新を取得する必要があるベンダーによって整数形式で提供されることを念頭に置いて、これにどのようにアプローチしますか。
precision - テイラー級数を使用して精度の低下を回避する
テイラー級数を使用して、関数を解くための数値的に健全なアルゴリズムを開発しようとしています。私はかなり長い間それに取り組んできましたが、まだ運がありません。何が間違っているのかわかりません。
機能は
また、この関数で精度が失われるのはなぜですか? x がゼロに近い場合、sin(x)/ln(1+x) は x と同じ数にさえ近くありません。どこで重要性が失われているのかさえわかりません。
これを解決するには、sin(x) と ln(1+x) のテイラー展開を使用する必要があると思います。
と
それぞれ。分母のようなものを使用して x と sin(x)/ln(1+x) コンポーネントを組み合わせたり、3 つすべてを組み合わせたりしようとしましたが、最終的には何もうまくいかないようです。どんな助けでも大歓迎です。
c++ - cout を使用して double 値を完全な精度で出力するにはどうすればよいですか?
以前の質問では、予想外のときに丸くなったdouble
使用を印刷していました。完全な精度を使用して印刷するcout
にはどうすればよいですか?cout
double
c# - キャンバス上の MouseLeftButtonDown には精度が必要すぎる
WPF キャンバスに追加された要素の MouseLeftButtonDown イベントに応答しています。クリックするとすべて正常に動作します (つまり、イベント ハンドラが正しく起動します) が、マウス ポインタの精度が高すぎます。それを機能させるには、完全に円の頂点に立つ必要があります。もう少し寛容にする必要があります。おそらく、少なくとも 1 つまたは 2 つのピクセルを許容します。キャンバス上の要素は大きな円 (画面の 4 分の 1 程度のサイズ) であるため、円自体は小さすぎませんが、それぞれの StrokeWidth は 1 であるため、細い線です。
ここでスクリーンショットを見ることができます: http://twitpic.com/1f2ci/full
ほとんどのグラフィックス アプリは、マウス ピッキングに関してそれほどうるさくありません。そのため、ユーザーに慣れ親しんだエクスペリエンスを提供したいと考えています。
もう少し寛容にするにはどうしたらいいでしょうか。
c++ - long double 出力の精度が正しくありません。何が間違っている可能性がありますか?
long double
const または not-const として設定している定数があります。long double
これは、テスト ワークステーションの精度 (19 桁) よりも長い (40 桁) です。
印刷すると、精度が 19 桁ではなく 16 桁で表示されます。
私がテストしているコードは次のとおりです。
コンパイル:
出力:
私は期待し0.6931471805599453094
ますが、代わりに取得し0.6931471805599452862
ます。
精度の 19 桁が 16 桁にカットされる理由はありますか?
ここに私の環境があります:
gcc の他のバージョンでも同じ問題が発生しています。
NTL や他のライブラリを調べることはできますが、何が原因なのか知りたいです。あなたの洞察に感謝します。