Главная chevron_right Функции chevron_right Математика chevron_right sqrt()

sqrt()

sqrt() вычисляет квадратный корень числа и возвращает результат как double. При отрицательном аргументе возвращает NaN.

Полная статья

Описание

sqrt() вычисляет квадратный корень числа и возвращает результат как double. Функция принимает любой числовой тип данных, поэтому её можно использовать как с целыми числами, так и с дробными.

Синтаксис

sqrt(x)

Параметры

x — число, из которого нужно извлечь квадратный корень. Тип данных: любой числовой тип.

Возвращает

Квадратный корень из x. Тип возвращаемого значения: double.

Если передать отрицательное число, результат будет NaN (Not a Number) — стандартное поведение для вещественной арифметики. Перед вызовом стоит убедиться, что аргумент неотрицателен, особенно если он получен из датчика или вычисления.

Пример

Вычислите квадратный корень из переменной x:

float x = 9.0;  

void setup() {
  Serial.begin(9600);

  double root = sqrt(x);

  Serial.print("The square root is: ");
  Serial.println(root);
}

void loop() {
}

Где применяется

  • Расстояние по теореме Пифагора — когда нужно найти гипотенузу по двум катетам: sqrt(a*a + b*b).
  • Нормализация вектора — вычисление длины вектора перед масштабированием.
  • Обработка данных с датчиков — например, перевод показаний датчика давления или ускорения в физические единицы, если формула содержит квадратный корень.
  • Геометрические расчёты — радиус окружности, диагональ прямоугольника и другие задачи, где результат зависит от корня.

Практические замечания

  • Результат всегда имеет тип double. Если сохранять его в int, дробная часть будет отброшена без округления — используйте явное приведение типов или round(), если нужно целое число.
  • На платах AVR (Uno, Nano, Mega) тип double совпадает с float и имеет точность около 6–7 значащих цифр. На платах с 32-битным процессором (Due, Zero, MKR) double полноценный 64-битный.
  • Передавать отрицательный аргумент нельзя — проверяйте входные данные, если источник значения ненадёжен.
  • sqrt() работает медленнее целочисленных операций. Если вычисление выполняется в быстром цикле, иногда имеет смысл кешировать результат в переменную, а не вызывать функцию повторно.
  • Для отладки удобно вывести результат через Serial.println()double корректно печатается с дробной частью.

Полезные материалы