C 编程比较浮点数



我的代码中的错误在哪里,超级简单,但比较没有输出正确的值。下面的这个函数在它自己的文件中,名为: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;
    }
}
如果浮点数 2 大于浮点数 1,则函数应返回

-1,如果浮点数 1 大于浮点数 2,则函数应返回 1。如果浮点值相等,它应该返回 0。

我的日食控制台输出(明W):

number1: 12.000000 
number2: 11.000000 
Comp: -1
11.000000 is greater than 12.000000

这是我的主要 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: %dn", comparison);
    if(comparison==1){
            printf("%f is greater than %fn",number1,number2);
    }else if(comparison==-1){
                printf("%f is greater than %fn",number2,number1);
    }else if(comparison==0){
        printf("Number are equaln");
    }else{
        printf("Errorn");
    }

    return 0;
}

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

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

#include <stdio.h>
int FloatCompare(float number1,float number2);
int main()
{
...
}

最新更新