Paul が指摘したように、10.0 はこれを説明する正しい例ではない可能性があります。
float を使用する場合、== < または > 演算子を安全に使用することはできません。その理由は、1.1 として入力された数値は、非整数型を使用すると 1.10000000000000000 にならないからです。したがって、特定のエラーしきい値デルタを定義します。これは、最も近い 2 つのフロート間の最も細かい解像度になる可能性があります。したがって、10 がハードコーディングされた値ではなく計算された値である場合、float ten=getXX(someinput); getXX() がいくつかの計算に基づいて何らかの結果を返すとします。
次に、K > (10 デルタ) && K < (100+デルタ) のような比較を行います。
これで十分だと思います。
したがって、小さなエラー修正係数なしで、float/double に対してリレーション演算を実行しないでください。
これを示すスニペットを次に示しますhttp://ideone.com/dxS9OI
#include <stdio.h>
int main(void) {
float eleven=11.0;
float one_dot_1=1.1;
float elevenUsingSummation = 0;
int i=0;
for(i=0; i<10; i++)
{
elevenUsingSummation+=one_dot_1;
}
printf("------------------------------\n"
"Floating point testing example \n"
"one_dot_1(2.10)=%2.10f, one_dot_1(2.20)=%2.20f\n"
"eleven(2.10)=%2.10f, eleven(2.20)=%2.20f\n"
"elevenusingsubmission(2.10)=%2.10f, elevenusingsubmission(2.20)=%2.20f\n"
"(elevenUsingSummation==eleven) evaluates to %s\n",
one_dot_1, one_dot_1, eleven, eleven, elevenUsingSummation, elevenUsingSummation,
elevenUsingSummation==eleven?"True":"False"
);
return 0;
}