我正在尝试在Visual Studio上创建自己的库/源函数

时间:2019-10-09 20:18:46

标签: c++ visual-studio computer-science

到目前为止,我已经知道了,地板和战俘都有红线,并且说标识符“ floor”是不确定的,并且战俘也得到了同样的信息。我在做什么错,我该如何解决?

double round_off(double value, double digits)
{
    double roundedval;
    roundedval = floor(value* pow(10, digits) + 0.5) / pow(10, digits);

    return roundedval;
}

1 个答案:

答案 0 :(得分:2)

  1. 确保您使用

    #include <cmath>
    
  2. 使用std::命名空间中的函数时,请使用std前缀。

    roundedval = std::floor(value* std::pow(10, digits) + 0.5) / std::pow(10, digits);
    
  3. 如果IDE仍然找不到功能,请忽略IDE。只要您的代码可以编译。建立。并且成功运行后,可以忽略IDE的问题。

建议对代码进行较小的改进

您有两个呼叫std::pow(10, digits)的电话。可以减少到一个。

double p = std::pow(10, digits);
roundedval = std::floor(value*p + 0.5)/p;

进一步的改进是根本不使用变量roundedval。该函数可以是:

double round_off(double value, double digits)
{
    double p = std::pow(10, digits);
    return std::floor(value*p + 0.5)/p;
}

下一个改进是使用int作为digits的类型,而不是double

double round_off(double value, int digits)
{
    double p = std::pow(10, digits);
    return std::floor(value*p + 0.5)/p;
}