我有一个比较 2 个 float 的简单代码:
我尝试使用 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 smaller
即使我设置 a1=0.004f 和 a2=0.0005f
最佳答案
abs 的原型(prototype)是一个整数!
int abs (int number);
你想要 float 晶圆厂
double fabs (double number);
关于C:为什么工厂在比较 float 时给出奇怪的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16857724/