正のフロートAが別の正のフロートB(C99)の逆二乗よりも小さいことを確認したい場合、Bが非常に小さいと、何か問題が発生する可能性がありますか?
私はそれを次のようにチェックすることを想像することができました
if(A<1/(B*B))
しかし、Bが十分に小さい場合、これはおそらく無限大になりますか?それが起こったとしても、コードはすべての状況で正しく機能しますか?
同様の流れで、私はするかもしれません
if(1/A>B*B)
...Bが小さい場合はB*Bがゼロになる可能性があるため、これは少し良いかもしれません(これは本当ですか?)
最後に、私が間違っているとは想像できない解決策は
if(sqrt(1/A)>B)
これがゼロ除算になるとは思わないが、Aがゼロに近い場合は問題が発生する可能性がある。
つまり、基本的に、私の質問は次のとおりです。
- Xがゼロより大きい(ただし小さい)場合、1 / Xは無限大になる可能性がありますか?
- Xがゼロより大きい場合、X * Xをゼロにすることはできますか?
- 無限大との比較は、私が期待するように機能しますか?
編集:疑問に思っている人のために、私はやることになりました
if(B*A*B<1)
どの乗算が最初に発生するかが視覚的に明確であるため、この順序で実行しました。