long double sinl (long double arg)
Функция sin() возвращает синус аргумента arg. Величина arg должна быть задана в радианах. Версией этой функции для данных типа long double служит функция sinl().
Следующая программа выводит синусы значений аргумента , изменяющегося от — 1 до 1 с шагом 0.1 :
#include
#include
int main ( void )
{
double val = — 1.0 ;
do {
printf ( «sine of %f is %f \n » , val , sin ( val ) ) ;
val += 0.1 ;
} while ( val return 0 ;
}
sin , sinf , sinl
Функции sin возвращают синус x . Если x значение больше или равно 263, или меньше или равно -263, происходит потеря значения в результате.
| Входные данные | Исключение SEH | Исключение _matherr |
|---|---|---|
| ± QNaN, IND | None | _DOMAIN |
| ± INF ( sin , sinf , sinl ) | INVALID | _DOMAIN |
Дополнительные сведения о кодах возврата см. в разделе errno , _doserrno _sys_errlist и _sys_nerr .
Замечания
Поскольку C++ допускает перегрузку, можно вызывать перегрузки sin , которые принимают и возвращают значения float или long double . В программе C, если вы не используете макрос для вызова этой функции, sin всегда принимает и возвращает. double
При использовании sin() макроса тип аргумента определяет, какая версия функции выбрана. Дополнительные сведения см . в разделе «Математика с универсальным типом».
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью «Глобальное состояние» в CRT.
Требования
| Маршрут | Обязательный заголовок (C) | Обязательный заголовок (C++) |
|---|---|---|
| sin , sinf , sinl | или | |
| sin Макрос |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// crt_sincos.c // This program displays the sine and cosine of pi / 2. // Compile by using: cl /W4 crt_sincos.c #include #include int main( void) < double pi = 3.1415926535; double x, y; x = pi / 2; y = sin( x ); printf( "sin( %f ) = %f\n", x, y ); y = cos( x ); printf( "cos( %f ) = %f\n", x, y ); >
sin( 1.570796 ) = 1.000000 cos( 1.570796 ) = 0.000000
Стандартные математические функции в языке Си
Математические вычисления не ограничиваются лишь арифметическими действиями. Кроме них, можно ещё встретить корни, модули, логарифмы, тригонометрические функции и пр. Научимся же использовать подобные функции в своих программах.
Для использования математических функций нужно подключить заголовочный файл math.h . В ней определено много различных функций, но мы пока рассмотрим следующие:
Некоторые математические функции
fabs(x) модуль числа x
sqrt(x) квадратный корень из числа x
sin(x) синус числа x (х в радианах)
cos(x) косинус числа x (х в радианах)
pow(x, y) вычисление x y
exp(x) вычисление e x
log(x) натуральный логарифм числа x
log10(x) десятичный логарифм числа x
- Все функции возвращают значение типа double .
- Параметры функций – вещественные числа( double ), но можно передавать и целые числа. При этом произойдёт неявное преобразование типа . Компилятор из целого числа, например 3, сделает вещественное 3.0.
#include #include // подключаем math.h int main (void)
Вычислить синус угла ввёденного с клавиатуры. Угол вводится в градусах.
#include #include // подключаем math.h int main (void) < double alpha, sin_a, pi = 3.1415926; scanf("%lf",&alpha); alpha = alpha*pi/180; sin_a = sin(alpha); printf("%.2f\n", sin_a); return 0; >
В этой программе есть о чём поговорить. Тригонометрические функции, которые определены в math.h работают с радианной мерой угла. Людям же привычнее работать с градусами. Поэтому в данной программе мы предварительно перевели значение из градусов в радианы. Если этого не сделать, результат получится неправильным. Проверьте это самостоятельно.
Неявное преобразование типов
При явном преобразовании типа мы в скобках перед значением указывали тип, к которому нужно привести данное значение. В неявном преобразовании этого делать не нужно. Компилятор автоматически подберёт необходимый тип. Неявное преобразование типов осуществляется в следующих случаях:
- перед передачей аргументов в функцию (как в нашем примере с корнем. Листинг 1.)
- выполнение арифметических операций с разными типами аргументов
- перед выполнением присваивания
- если выполняются арифметические операции с разными типами аргументов. Оба аргумента приводятся к большему типу.
Порядок типов: int < float < double - при присваивании. Значение справа от оператора присваивания приводится к типу переменной слева от оператора присваивания. При этом, если больший тип присваивается меньшему, то может произойти потеря точности.
Примеры: int+float будет автоматически преобразовано к float+float
float/int будет автоматически преобразовано к float/float
double*float будет преобразовано к double*double
int = double double будет преобразовано к int с потерей дробной части
float = int int будет преобразовано к float
Сохрани в закладки или поддержи проект.
Практика

Решите предложенные задачи: Для удобства работы сразу переходите в полноэкранный режим
Дополнительные материалы
- пока нет
Функция sin
Вычисление синуса, функция sin возвращает синус угла agl , переведенного в радианы. В C++, эта функция перегружена в заголовочных файлах и (смотреть sin комплексных чисел и sin в библиотеке массивов числовых значений).
В Си, определён только один прототип этой функции, с типом данных double .
Параметры:
- agl
Значение с плавающей точкой, представляющее угол в радианах.
Возвращаемое значение
Пример: исходный код программы
// пример использования функции синуса: sin #include // для оператора cout #include // для функции sin #define PI 3.14159265 // число ПИ int main() < double param = 30.0; // угол 30 градусов std::cout << "Cинус угла " << param << " градусов = " << sin(param * PI / 180) // вычисляем синус угла, переведённого в радианы
Пример работы программы
CppStudio.com
Cинус угла 30 градусов = 0.5