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корректно печатается с дробной частью.