競技プログラミングでの1e-12の使用法は何ですか?


ベストアンサー

浮動小数点数はコンピューターのメモリに正確に保存されません。これは、浮動小数点数が最も近い2進表現に近似されるためです。したがって、次のように仮定します。

float a=0.87;

float b=0.87;

if(a==b){

printf("Equal \n");

} else {

printf("Not equal \n");

}

チャンス「等しくない」と表示されます。では、質問があります。2つの浮動小数点数が等しいかどうかを確認するにはどうすればよいですか?

ここで、1e-12が登場します。 2つの浮動小数点数の間の1e-12未満は、それらが等しくなるのに十分低いと見なされます。したがって、2番目のマクロでは、aの絶対値が1e-12未満であるかどうかをチェックします。プログラムは次のようになります。

float a=0.87;

float b=0.87;

if(zero(a-b)){

printf("Equal \n");

} else {

printf("Not qqual \n");

}

これは「等しい」と出力されることが保証されています。

私はそれを願っています

回答

まあ、彼がまったく気にしない場合、それについて話し合うのに十分であっても、あなたの仕事は不可能です。

彼が話したいが、コードを見たり学んだりしたくない場合は、彼と一緒にこのゲームをプレイしてみてください。あなたは自律性のないロボットです。彼の仕事は、ソファから起き上がってキッチンに行き、ピーナッツバターとゼリーのサンドイッチを4つ作ることです。彼はあなたに英語のコマンドを与えることによってこれをしなければならないでしょう。

「歩く」や「引き出しからナイフを取り出す」などのアクションを理解しているので、彼は「各筋肉を動かす方法を教える必要はありません。また、オブジェクトが何であるかを理解しているので、彼は理解していません」 「ナイフ」を定義する必要があります。しかし、それはあなたの理解の限界です。

結果が4つのPB&Jサンドイッチにならないたびに、彼の指示を文字通り実行し、最初からやり直すようにしてください。

「立ち上がってキッチンまで歩く」

立ち上がって、キッチンとリビングルームを隔てる壁まで歩いていく。

「Arg!つまり、立ち上がってキッチンの入り口まで歩いてください。」

そうします。

「食器棚からパンを取り除く」

食器棚のドアを引っかいて、パンを取り出せません。

「ドアを開けて!」

オーブンのドアを開けます。

「食器棚のドアを開けるという意味です!」

そうします。

「パンを取り出してください。」

パンを食器棚からキッチンの床にたたきます…

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です