頼れるかな
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)が必要かどうかを判断してみませんか? ご覧のとおり、正方形の場合、違いは大きいかもしれません。しかし、それがなければ、非正方形の違いは小さいかもしれません. おそらくどちらもしないでしょう。:-(