問題タブ [floating-point]
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.
binary - 浮動小数点 16 進数 8 進数 2 進数
私は、8 進数、16 進数、2 進数、そしてもちろん 10 進数で小数点以下の計算を実行できる電卓に取り組んでいます。浮動小数点の 10 進数を浮動小数点の 16 進数、8 進数、2 進数、またはその逆に変換する方法を見つけるのに問題があります。
計画は、すべての計算を 10 進数で行い、その結果を適切な数値システムに変換することです。ヘルプ、アイデア、または例をいただければ幸いです。
ありがとう!
language-agnostic - *相対*エラーに対して浮動小数点数が等しいかどうかを比較する必要がありますか?
これまで、浮動小数点数の等価性を扱った多くの投稿を見てきました。「x と y が等しいかどうかをどのように判断すればよいですか?」などの質問に対する標準的な回答です。は
ここで、epsilon は固定の小さな定数です。これは、「オペランド」x と y が、丸め誤差が含まれる計算の結果であることが多いためです。そのため、標準の等値演算子 == は意味するものではなく、実際に確認する必要があるのは、x と y が近いかどうかです。 、等しくありません。
ここで、x が y と「ほぼ等しい」場合、x*10^20 も y*10^20 と「ほぼ等しい」はずであると感じています。 " 何に?)。しかし、これらの大きな数では、上記のテストは失敗します。つまり、そのソリューションは「スケーリング」しません。
この問題にどう対処しますか?数値を再スケーリングするか、イプシロンを再スケーリングする必要がありますか? どのように?(それとも私の直感が間違っているのでしょうか?)
ここに関連する質問がありますが、受け入れられた回答は好きではありません.reinterpret_castのことは私には少し難しいようです. 簡単なテストを提供してみてください。
c# - 浮動小数点の不正確さはどの程度決定論的ですか?
浮動小数点計算には精度の問題があり、その理由を説明する多くの質問があることを理解しています。私の質問は、同じ計算を 2 回実行した場合、常に同じ結果が得られるということですか? これに影響を与える要因は何ですか?
- 計算間の時間?
- CPUの現在の状態?
- ハードウェアが違う?
- 言語/プラットフォーム/OS?
- 太陽フレア?
簡単な物理シミュレーションがあり、再生できるようにセッションを記録したいと考えています。計算が信頼できる場合は、初期状態とユーザー入力を記録するだけでよく、常に最終状態を正確に再現できるはずです。計算が正確でない場合、開始時のエラーがシミュレーションの終了までに大きな影響を与える可能性があります。
私は現在 Silverlight で作業していますが、この質問に一般的に答えられるかどうか知りたいです。
更新: 最初の回答は「はい」を示していますが、選択した回答のコメントで説明されているように、明らかにこれは完全に明確ではありません。いくつかのテストを行って、何が起こるかを確認する必要があるようです。
.net - 丸めない小数の切り捨て
以下のように小数点以下を切り捨てたい
すなわち
- 2.22939393 -> 2.229
- 2.22977777 -> 2.229
oracle - Oracle 浮動小数点数と数値
Oracle のドキュメントに矛盾する参照があります。10 進数を FLOAT に格納する方法とデータベースの NUMBER 型に格納する方法に違いはありますか?
C などから思い出したように、float には int にはない精度の制限があります。Rg、float の場合、0.1(Base 10) は 0.110011001100110011001101(Base 2) として概算されます。これは、およそ 0.100000001490116119384765625 (Base 10) のようなものです。ただし、int の場合、5(底 10) は正確に 101 (底 2) です。
これが、C で次のコードが期待どおりに終了しない理由です。
ただし、Oracle のドキュメントの他の場所で、FLOAT が NUMBER として定義されていることがわかります。私が理解しているように、Oracle の NUMBER 型の実装では、C の float と同じ問題は発生しません。
それで、ここで本当の話は何ですか?Oracle は、float/FLOAT で起こると予想される標準から逸脱していますか?
(私がそれらを使用する目的については、ハリケーンの中の蜂の屁の違いであると確信していますが、0.1 * 10が1.00000000000000001になると疑問が生じることはわかっています)
c++ - Float または Double 特殊値
有効な値を保持していない場合のように、「空」である可能性のある double (または float) 変数があります。組み込み型 float および double でこの状態をどのように表現できますか?
1 つのオプションは float と boolean を持つラッパーですが、私のライブラリには double として動作するオブジェクトではなく double を格納するコンテナーがあるため、これは機能しません。もう 1 つは NaN (std::numeric_limits) を使用することです。しかし、変数が NaN であることを確認する方法がわかりません。
数値以外の何かを意味する「特別な」浮動小数点値が必要であるという問題を解決するにはどうすればよいですか?
c++ - float から個々の数字を抽出する
私は一日中これに頭をぶつけています。私が現在取り組んでいる C++ プロジェクトには、編集可能な値を表示するという要件があります。現在選択されている桁には、その桁の上に増加した値と下に減少した値が表示されます。編集可能な値を数字と数字のコレクションの両方として参照できると便利です。インデックス可能な形式の浮動小数点数があれば素晴らしいことですが、そのような解決策を見つけることができませんでした。私はこの質問をそこに投げ出して、私が見逃している明らかなものがあるかどうか、または自分でロールバックする必要があるかどうかを確認しています.
アドバイスありがとう!float -> string -> int から変換されない解決策を望んでいましたが、浮動小数点の量子化の問題を回避するにはそれが最善の方法だと思います。私はboost::formatを使い、文字列の個々の文字を参照するだけになりました。modf と fmod の組み合わせを使用して float から数字を取得しようとする場合と比較して、パフォーマンスに大きな違いがあることはわかりません (おそらく、舞台裏でそれを行い、私の実装よりも確実に行うだけです)。
.net - この単純な数学の結果には、10 進数、浮動小数点、または倍精度を使用する必要がありますか?
私はいくつかの非常に単純な計算を行っており、結果を MS SQL2008 DB に保存しています。
1 <-> 5 のバイト値であるいくつかの数値を平均しています。おそらく小数点以下2桁だけを記録したいと思います。小数第 2 位の丸めは気にしません (たとえば、1.155 == 1.5 または 1.6 .. 私はあまり段階的ではありません)。
だから..平均結果をfloat、decimal、またはdoubleとして保存する必要がありますか?
LINQ が返すものを確認すると、3 つの値すべてを返すことができます。
最後に、関連する SQL データ型フィールドは何でしょう。
乾杯!
.net - 浮動小数点値を調整するためのコントロールのような winforms スピナーはありますか?
スピナーコントロールのようなものを使用して、ユーザーが調整可能な増分で上下に調整したい浮動小数点値を持つ.NETアプリがあります。出発して自分で構築する前に、このようなものはすでに存在しますか?
floating-point - エンジニアリングデータをどの測定単位に保存しますか?
私たちのアプリでは、現在、すべてのエンジニアリングデータをSIのデータベースに保存するという決定の遺産があります。
データベースまたは.NET数値型で十分な精度と精度が得られないリスクが生じる可能性があるのではないかと心配しています。また、浮動小数点演算のアーティファクトが表示される可能性があることも心配しています(ただし、それ自体が問題になる可能性があります)。
たとえば、ソースデータは、Psi(ポンド/平方インチ)で表された(および一部のサードパーティサービスから読み込まれた)圧力量である可能性があります。エンジニアはこの測定単位を選択します。これは、(表現される量について)科学的記数法を必要とせずに、簡単に消化され、人間が読める数値を与える傾向があるためです。
数値を「標準化」するとき、つまり、この量を独自の永続性のために変換するとき、Pa(パスカル)に変換する可能性があります。これには、数値を他の潜在的に大きな数値で乗算または除算する必要があります。
多くの場合、非常に大きい数または非常に小さい数を格納することになり、さらに悪いことに、これらの数についてさらに計算を行う可能性があります。
現在、ORACLEfloatとSystem.Doubleを使用しています。
人々はこれについてどう思いますか?
アップデート
さらなる調査により、次のF#言語(私が書いているCTP)での測定単位のサポートが明らかになりました。
F#に次のようなユーザー入力を理解させることができるようです。
また、独自の派生ユニットとユニットシステムを作成することもできます。
(ソース:msdn.com)