私は単純な関数を書いて、使用中のアサートマクロを知りたいと思います。 6番目のアサート関数の後に関数(moving_hysteresis)をテストすると、アボートが発生し、なぜそれを見つけることができませんでした。 moving_hysteresis()関数は、次のとおりです。負の浮動小数点を使用したCでのアサート
float moving_hysteresis(float Delta,float temp)
{
float delta=Delta;
float temp_min=ZERO;
float temp_max=delta;
float result;
if(temp<=temp_max)
{
if(temp>=temp_min)
{
result=temp;
return result;
}
else
{
result=temp+delta;
return result;
}
}
else
{
result=temp-delta;
return result;
}
}
私は
assert(moving_hsysteresis(5.00,-5.01)==(float)-0.01);
でこれをテストしようとした場合、私はアサーションを取得し、私がしようとした場合、私は、例えば、なぜ... を見つけることができませんでしたこれでテストしてください。
assert(moving_hsysteresis(5.00,-2.36)==(float)2.64);
正しく動作します。誰か考えている?
正確な浮動小数点値のテストは、ほとんど常に悪い考えです。 –
ご協力いただき、ありがとうございました!今私にとっては明らかです! –