到目前为止,我已经知道了,地板和战俘都有红线,并且说标识符“ floor”是不确定的,并且战俘也得到了同样的信息。我在做什么错,我该如何解决?
double round_off(double value, double digits)
{
double roundedval;
roundedval = floor(value* pow(10, digits) + 0.5) / pow(10, digits);
return roundedval;
}
答案 0 :(得分:2)
确保您使用
#include <cmath>
使用std::
命名空间中的函数时,请使用std
前缀。
roundedval = std::floor(value* std::pow(10, digits) + 0.5) / std::pow(10, digits);
如果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;
}