C编程比较浮点数

2 c floating-point

我的代码中的错误在哪里,超级简单但比较没有输出正确的值.下面的这个函数位于自己的文件中:FloatingPointRepresentationsFunctions.c

int FloatCompare(float number1,float number2){
    // Write the function to compare and return the corresponding value
    if(number1 < number2){
        return -1;
    }else if(number2 < number1){
        return 1;
    }else{
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果float 2大于float 1,则函数应返回-1,如果float 1大于float 2,则应返回1.如果float值相等,则返回0.

我的eclipse控制台输出(mingW):

number1: 12.000000 
number2: 11.000000 
Comp: -1
11.000000 is greater than 12.000000
Run Code Online (Sandbox Code Playgroud)

这是我的主要c文件:

#include <stdio.h>

int main()
{
    float number1 = 0;
    float number2 = 0;

    int comparison;

    number1=12;
    number2=11;
    printf("number1: %f \nnumber2: %f \n", number1, number2);
    comparison=FloatCompare(number1,number2); // Compare two floating point numbers
    printf("Comp: %d\n", comparison);
    if(comparison==1){
            printf("%f is greater than %f\n",number1,number2);
    }else if(comparison==-1){
                printf("%f is greater than %f\n",number2,number1);
    }else if(comparison==0){
        printf("Number are equal\n");
    }else{
        printf("Error\n");
    }


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

dbu*_*ush 5

您的主文件没有适当的原型FloatCompare.这意味着它假定默认函数定义int FloatCompare(),这导致函数被错误地调用和未定义的行为.

您需要向主源文件添加声明,以便它知道如何正确调用该函数.

#include <stdio.h>

int FloatCompare(float number1,float number2);

int main()
{
...
}
Run Code Online (Sandbox Code Playgroud)