首页 > 解决方案 > 我正在尝试在 Visual Studio 上创建自己的库/源函数

问题描述

到目前为止,我有这个,地板和战俘有红线,它说标识符“地板”是未定义的,我得到与战俘相同的消息。我做错了什么,我该如何解决?

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

    return roundedval;
}

标签: c++visual-studiocomputer-science

解决方案


  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;
}

推荐阅读