Я пытаюсь создать свою собственную библиотеку / функцию источника в Visual Studio - PullRequest
0 голосов
/ 09 октября 2019

Пока у меня есть это, и слово floor и pow имеют красные линии, и это говорит, что идентификатор «floor» не определен, и я получаю то же сообщение с pow. Что я делаю не так и как я могу это исправить?

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

    return roundedval;
}

1 Ответ

2 голосов
/ 09 октября 2019
  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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...