在C ++中找到最小值(double)

时间:2019-02-05 16:52:50

标签: c++ function double void minimum

我刚开始学习c ++,我写了一段代码来查找带有int值的最小值,现在我必须使用double值来做,但是我错了!请让我知道如何解决!

select *
from generate_anagrams('signature');

1 个答案:

答案 0 :(得分:1)

您的函数缺少显式的return值(您也无法在同一范围内更改变量的类型,因此编译器在到达double num1,num2;时会抱怨)。

至少需要写

double findminval(double num1, double num2){
    double minval;
    if (num1 < num2){
        minval = num1;
    } else {
        minval = num2;
    }
    return minval;
}

尽管您可以简化此操作,但代价是难以调试,

double findminval(double num1, double num2){
    if (num1 < num2){
        return num1;
    } else {
        return num2;
    }
}

甚至

double findminval (double num1, double num2){
    return num1 < num2 ? num1 : num2;
}

请注意,您可以模板化,这样就不需要两个功能:

template<typename Y> Y findminval(const Y& num1, const Y& num2){
    return num1 < num2 ? num1 : num2;
}

请注意,我现在通过const引用来消除可能的值副本。现在您看到我们在std::min上绊脚石。最后要考虑的一点是:“礼节”是在参数相等的情况下返回第一个参数。这是为了保留浮点的符号零,甚至是1的补码系统中的整数。因此,除了使用std::min之外,这可能是最好的选择:

template<typename Y> Y findminval(const Y& num1, const Y& num2){
    return num1 <= num2 ? num1 : num2;
}