タグ付けされた質問 「floating-point」

7
いつフロートを使用し、いつダブルを使用しますか
多くの場合、プログラミングの経験では、実数にfloatを使用するかdoubleを使用するかを決定する必要があります。フロートに行くこともあれば、ダブルに行くこともありますが、実際にはもっと主観的に感じます。私が自分の決定を守るために直面​​するなら、おそらく正当な理由を述べないでしょう。 いつfloatを使用し、いつdoubleを使用しますか?常にメモリ制約が存在する場合にのみ、doubleを使用しますか?または、精度の要件でdoubleを使用する必要がない限り、常にfloatを使用しますか?floatとdoubleの間に基本的な数理計算の計算の複雑さに関して実質的な違いはありますか?floatまたはdoubleを使用することの長所と短所は何ですか?そして、ロングダブルを使用しましたか?
194 c++  c  floating-point  numbers 

6
代わりにdoubleが主に推奨されるのに、なぜfloatがJava言語の一部であるのはなぜですか?
私が見たすべての場所で、それはほぼすべての点doubleで優れていると言いfloatます。Javaでfloat廃止さdoubleれたのに、なぜまだ使用されているのですか? 私はLibgdxで多くのプログラムを作成しており、それらを使用することを強制していますfloat(deltaTimeなど)が、doubleストレージとメモリの点で作業する方が簡単だと思われます。 私はまた、いつfloatを使用し、doubleを使用するのかを読んでいますが、float本当に小数点以下の桁数が多い数値にのみ適している場合、なぜ多くのバリエーションの1つを使用できないのdoubleですか? もはや利点がなくなっても、人々がフロートを使用することを主張する理由はありますか?すべてを変更するのは大変な作業ですか?

5
負のゼロが重要なのはなぜですか?
正と負のゼロの異なる表現を気にする理由について私は混乱しています。 複素数を含むプログラミングでは、負のゼロ表現を持つことが非常に重要であるという主張を漠然と思い出しました。複素数を含むコードを書く機会がなかったので、なぜそうなるのか少し困惑しています。 この概念に関するウィキペディアの記事は特に有用ではありません。私が正しく理解すれば、符号付きゼロについて漠然とした主張をするだけで、浮動小数点での特定の数学的操作が簡単になります。この回答には、動作が異なる2つの関数がリストされています。これらの関数の使用方法に精通している場合は、例から何かを推測できます。(ただし、複雑な平方根の特定の例は完全に間違っているように見えます、2つの数字は数学的に同等なので、誤解がない限り)。しかし、それがないとあなたが直面するようなトラブルの明確な説明を見つけることができません。私が見つけたより数学的なリソースは、数学的な観点からこの2つを区別することができないという状態を見つけることができました。 では、なぜ負のゼロはコンピューティングで価値があるのでしょうか?私は何かを逃していると確信しています。

7
浮動小数点の丸めエラーの原因は何ですか?
浮動小数点演算には精度の問題があることを認識しています。私は通常、数値の固定10進数表現に切り替えるか、単にエラーを無視することでそれらを克服します。 しかし、この不正確さの原因はわかりません。浮動小数点数で丸めの問題が多いのはなぜですか?

3
10進数では表現できないが、2進数では表現できる数値はありますか?
C#基数10での正確な表現が必要な数値に使用されるdecimal型を持ちます。たとえば0.1、基数2(floatおよびなどdouble)で表現することはできず、これらの型の変数に格納されると常に近似値になります。 逆の事実も可能かどうか疑問に思っていました。10進数では表現できないが、2進数では表現できる数字がありますか(この場合float、decimalそれらを処理するためにaの代わりにa を使用します)。


9
科学/工学で浮動小数点数が頻繁に使用されるのはなぜですか?
浮動小数点数の精度を調査しているときに、いくつかの場所で次のようなステートメントを確認しました。 「floatとdoubleは(設計 / 使用頻度が高い)工学および科学計算」 私の理解では、floatとdoubleの強さは、それらが(良いが完全ではない)精度のために使用するメモリの量です。 私はこの答えからほとんど理解を得ているように感じます 「浮動小数点数を使用すると、連続量をモデル化できます」 私はまだ理解していると確信していません。工学と科学はどちらも、計算から正確な結果が必要な分野のように聞こえますが、私の理解では、浮動小数点は得られません。また、「連続量」が何であるかを正確に把握しているわけでもありません。 誰かがこの説明を拡張して、おそらく例を挙げることができますか?

8
私の場合、丸めエラーが発生していなくても、浮動小数点数が等しいかどうかを比較すると、ジュニア開発者を誤解させますか?
たとえば、0、0.5、... 5のボタンのリストを表示し、0.5ごとにジャンプします。私はforループを使用してそれを行い、ボタンSTANDARD_LINEで異なる色を使用しています: var MAX=5.0; var DIFF=0.5 var STANDARD_LINE=1.5; for(var i=0;i<=MAX;i=i+DIFF){ button.text=i+''; if(i==STANDARD_LINE){ button.color='red'; } } この場合、IEEE 754では各値が正確であるため、丸めエラーはありませんが、浮動小数点の等価比較を避けるために変更する必要がある場合は苦労しています: var MAX=10; var STANDARD_LINE=3; for(var i=0;i<=MAX;i++){ button.text=i/2.0+''; if(i==STANDARD_LINE/2.0){ button.color='red'; } } 一方で、元のコードはよりシンプルで、私にとっては楽しみです。しかし、私が検討していることが1つあります。i== STANDARD_LINEはジュニアチームメイトを誤解させますか?浮動小数点数に丸め誤差がある可能性があるという事実を隠していますか?この投稿のコメントを読んだ後: https://stackoverflow.com/questions/33646148/is-hardcode-float-precise-if-it-can-be-represented-by-binary-format-in-ieee-754 一部の浮動小数点数が正確であることを知らない開発者が多いようです。私の場合、浮動小数点数の等価比較が有効であっても、避けるべきですか?または、私はこれについて考えすぎていますか?

12
なぜfloat / doubleが必要なのですか?
私はhttp://www.joelonsoftware.com/items/2011/06/27.htmlを見ていて、0.3ではなく0.3についてのJon Skeetのジョークを笑っていました。個人的には浮動小数点数/小数/倍数の問題は一度もありませんでしたが、6502を非常に早く学習し、ほとんどのプログラムで浮動小数点数を必要としなかったことを覚えています。私がそれを使用したのは、不正確な数値は問題なく、出力は画面用であり、(db、ファイルに)格納または依存されないグラフィックと数学のためだけでした。 私の質問は、あなたが通常どこでfloats / decimals / doubleを使用しているのですか?だから私はこれらの落とし穴に注意することを知っています。お金ではlongを使用し、セント単位で値を保存します。ゲーム内のオブジェクトの速度のために、intを追加し、ピクセルを移動する必要があるかどうかを知るために値を分割(またはビットシフト)します。(6502日でオブジェクトを移動しました。分割もフロートもありませんが、シフトがありました)。 だから私はほとんど興味がありました。

5
整数から単一への変換が精度を失う場合がある
拡大コンバージョンとオプションストリクトオンに関するマイクロソフトの記事を読んでいたとき 次の変換は精度を失う可能性があります。 整数から単一 ロングからシングルまたはダブル 10進数からシングルまたはダブル ただし、これらの変換では情報や規模は失われません。 ..しかし、データ型に関する別の記事によると、 整数型は-2.147.483.648から2.147.483.647まで保存でき、 シングルタイプから保存できます 正の数の場合は1,401298E-45から3,4028235E + 38まで、 負の数の場合は-3,4028235E + 38から-1,401298E-45 ..そのため、SingleはIntegerよりもはるかに多くの数値を格納できます。どのような状況で整数から単一への変換が精度を失う可能性があるのか​​理解できませんでした。誰か説明してくれませんか?

2
誰でもメモリ内のフロートの表現を説明できますか?
前の質問を読んだので、これは重複した質問ではありません。 誰でも私を理解するのを助けることができhow float values are stored in the memoryます。 私の疑問は、ここでフロート値に含まれる ' .'(for example 3.45)'.'がメモリ内でどのように表現されるか? 誰かが図で私を明確にしてくれますか?

5
浮動小数点丸めエラーのソリューション
多くの数学的計算を扱うアプリケーションを構築する際に、特定の数値が丸め誤差を引き起こすという問題に遭遇しました。 私は浮動小数点が正確ではないことを理解していますが、問題は正確な数値をどのように処理して浮動小数点の丸めが問題を引き起こさないようにするのですか?

6
近似等式を使用したフロートハッシュの実装方法
次のPythonクラスがあるとしましょう(問題はJavaにもequalsandと同じように存在しますhashCode) class Temperature: def __init__(self, degrees): self.degrees = degrees ここでdegrees、フロートとしてのケルビンの温度です。今、私はのための平等のテストやハッシュを実装したいTemperatureという方法で、 直接等価テストではなく、イプシロンの差までフロートを比較します。 をa == b意味する契約を尊重しhash(a) == hash(b)ます。 def __eq__(self, other): return abs(self.degrees - other.degrees) < EPSILON def __hash__(self): return # What goes here? Pythonのドキュメントでは、数値をハッシュすることについて少し説明してhash(2) == hash(2.0)いますが、これはまったく同じ問題ではありません。 私は正しい軌道に乗っていますか?もしそうなら、この状況でハッシュを実装する標準的な方法は何ですか? 更新:現在、フロートのこのタイプの等価テストでは==、との推移性が排除されていることを理解していequalsます。しかし、フロートを直接比較するべきではないという「常識」とどのように結びついているのでしょうか?浮動小数点数を比較して等値演算子を実装すると、静的解析ツールが文句を言います。彼らはそうする権利がありますか?

2
Luaは整数と浮動小数点数の両方をどのように処理しますか?
私がプログラミングを覚えている限り、浮動小数点数を比較して平等にしないように教えられました。今、LuaのプログラミングについてLua を読んでいるとnumber、次のことがわかりました。 数値型は、実数(倍精度浮動小数点数)を表します。Luaには整数型は必要ありません。浮動小数点演算エラーについては誤解が広まっており、一部の人々は、単純な増分でさえ浮動小数点数で奇妙になることがあると恐れています。実際、整数を表すためにdoubleを使用すると、丸め誤差はまったくありません(数値が100,000,000,000,000を超えない限り)。具体的には、Lua数値は、丸めの問題なしで任意の長整数を表すことができます。さらに、最新のCPUのほとんどは、整数演算と同程度(またはそれ以上)の浮動小数点演算を実行します。 それはすべての言語に当てはまりますか?基本的に、倍精度浮動小数点を超えない場合、整数演算で安全ですか?または、質問のタイトルに沿って、Luaがそのnumberタイプで行う特別なことはありますか?整数型と浮動小数点型の両方としてうまく機能していますか?

1
浮動小数点関数の暗黙の精度
別のプログラマの見直しながら、正規分布のCDFを計算する関数の実装を、私が作っ提案 Pythonの組み込み関数または使用scipyのダウンロード、共通の科学的なライブラリを実装全体を置き換えるのいずれかにします。 別のプログラマーは、彼らのドキュメンテーションにおいていかなる正確性の保証math.erfc()もscipy.stats.norm.cdf()提供もしないことを指摘しました。したがって、(尊重されたソースから取得され、エラー範囲が文書化されていた)近似アルゴリズムの置き換えについては、さらに注意する必要があります。 正直なところ、組み込み関数やライブラリー関数の正確さと正確さを疑うという考えは、私の心を超えたことはありませんでした。結局、私のような機能を呼び出してきたsin()し、sqrt()あまり考えず年間のを-なぜ必要がありますmath.erf()またはscipy.stats.norm.cdf()任意の異なること? しかし、今、私は心配しています。私の質問は: 一般的に、ドキュメントで特別な言及がない場合、これらの種類の関数は、IEEE倍精度浮動小数点で提供される精度の範囲内で、小数点以下の最後まで完全に正確であることを意味しますか? Python math.erf()やSciPy scipy.stats.norm.cdf()は特にそうですか?どうしてわかりますか? このmanページはsin()言う… これらの関数は、引数がpiの倍数に近いか、0.0から離れていると、精度が低下する可能性があります。 サイン関数が周期的で対称であるのに、なぜこのような警告が存在するのでしょうか?最適な精度を得るには、入力を正規化するための呼び出し側に負担がかかるようです。 一方、MozillaのドキュメントでMath.sin()は、正確さや正確さについては何も述べられていません。それはそれが完全に正確であることを意味しますか、それともMath.sin()他の場所のように、JavaScriptの特定の状況でのみ正確であることは「共通の知識」ですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.