頼れるかな
sqrt((float)a)*sqrt((float)a)==a
また
(int)sqrt((float)a)*(int)sqrt((float)a)==a
が完全平方かどうかを確認するには? なぜですか、そうでないのですか?
int a
判断する数字です。Visual Studio 2005 を使用しています。
編集:これらすべての迅速な回答に感謝します。float 型の比較に頼ることができないことがわかりました。(上記のように書いた場合、最後はa
暗黙的に float にキャストされますか?)
(int)sqrt((float)a)*(int)sqrt((float)a) - a < e
その値をどのくらい小さくする必要がありe
ますか?
Edit2:ねえ、比較部分は脇に置いて、(int)
が必要かどうかを判断してみませんか? ご覧のとおり、正方形の場合、違いは大きいかもしれません。しかし、それがなければ、非正方形の違いは小さいかもしれません. おそらくどちらもしないでしょう。:-(