проблема, с которой вы сталкиваетесь, связана с тем, что вы используете встроенную функцию sin() языка C++, которая работает с радианами, а не с градусами. Радианы и градусы - это разные единицы измерения угла.
Для того чтобы вычислить синус угла в градусах, вы должны предварительно преобразовать градусы в радианы. Для этого можно воспользоваться следующей формулой:
return 0;
}
Этот код преобразует угол из градусов в радианы, а затем использует sin() для вычисления синуса в радианах. Теперь он должен корректно вычислять синус угла вне зависимости от его величины.
#include
#include
using namespace std;
double sin_x(double x) {
static const auto y = 3.14159265358979323846 / 180.0;
static const auto eps = 1e-14;
auto z = sin(x * y);
if (fabs(z)
Невозможно точно записать значение числа pi. А вычисление синуса "примерно pi" даёт "примерно ноль" (в твоём случае: 0,0000000535898) - в точном соответствии с учебником вычислительной математики.
Но если ты поменяешь порядок выполнения математических действий в выражении x * (pi / 180), точность ответа может поменяться (а может и остаться той же самой) - и это тоже есть в учебнике.