0

2 つの浮動小数点数を比較する小さな単純なコードがあります。

fabs を使用してみましたが、間違った奇妙な結果が得られます。何が間違いで、正しい形は何ですか?

#include <stdio.h>
#include <stdlib.h>
#include <float.h>

void compareFloat(double a1, double a2)
{
   if(fabs(a1 - a2) < DBL_EPSILON)
       printf("a1 is smaller\n");
   else
       printf("a1 is larger\n");
}

int main()
{
 float a1=0.0000004f, a2=0.0005f;
 compareFloat(a1, a2);
}

このコードの間違いは何ですか? a1 is smallera1=0.004f と a2=0.0005f を設定しても常に印刷されます

4

3 に答える 3