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


11
浮動小数点値を比較することはどれほど危険ですか?
解像度に依存しない座標系のため、私はUIKit用途を知ってCGFloatいます。 しかし、私は、例えばかどうかを確認するたびにframe.origin.xされ0、それは私が病気に感じさせます。 if (theView.frame.origin.x == 0) { // do important operation } ではないCGFloatと比較する際に偽陽性に弱いですか==、<=、>=、<、>?これは浮動小数点であり0.0000000000041、たとえば不正確な問題があります。 されてObjective-C比較するときに内部的にこれを処理するか、ということが起こる可能origin.xゼロとして読み込むにはとは比較にならない0本当のよう?


21
Javaでフロートを比較するために==を使用することの何が問題になっていますか?
このjava.sunページによると ==、Javaの浮動小数点数の等価比較演算子です。 ただし、このコードを入力すると: if(sectionID == currentSectionID) エディターに入力して静的分析を実行すると、「==と比較したJAVA0078浮動小数点値」が表示されます。 を使用==して浮動小数点値を比較することの何が問題になっていますか?それを行う正しい方法は何ですか?

4
Python 3では4 * 0.1の浮動小数点値は見栄えが良いのに、3 * 0.1は見栄えが悪いのはなぜですか?
ほとんどの小数には正確な浮動小数点表現がないことがわかっています(浮動小数点演算は壊れていますか?)。 しかし、両方の値が実際に醜い10進数表現を持っている場合、なぜ4*0.1がとしてうまく表示されるのかわかりません0.4が、そうで3*0.1はありません。 >>> 3*0.1 0.30000000000000004 >>> 4*0.1 0.4 >>> from decimal import Decimal >>> Decimal(3*0.1) Decimal('0.3000000000000000444089209850062616169452667236328125') >>> Decimal(4*0.1) Decimal('0.40000000000000002220446049250313080847263336181640625')

12
2つの等しくない浮動小数点数を引くことによって0を取得することは可能ですか?
次の例では、0(または無限大)による除算を取得できますか? public double calculation(double a, double b) { if (a == b) { return 0; } else { return 2 / (a - b); } } もちろん、通常はそうなりません。しかし、どのような場合aとb非常に接近している、できる(a-b)ことになり0、計算の精度が原因? この質問はJavaに関するものですが、ほとんどのプログラミング言語に当てはまると思います。


4
1.0に最も近いdoubleは何ですか、それは1.0ではありませんか?
プログラムで1.0に最も近いdoubleを取得する方法はありますが、実際には1.0ではありませんか? これを行うハックな方法の1つは、doubleを同じサイズの整数にmemcpyしてから、1を減算することです。IEEE754浮動小数点形式が機能する方法では、これにより、小数部をすべてゼロ(1.000000000000)からすべて1(1.111111111111)に変更しながら、指数が1つ減少します。ただし、整数がリトルエンディアンで格納され、浮動小数点がビッグエンディアンで格納されるマシンが存在するため、常に機能するとは限りません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.