Форум программистов, компьютерный форум CyberForum.ru

Непонятный вывод значений синуса - C++

Восстановить пароль Регистрация
 
MicM
 Аватар для MicM
820 / 487 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
24.08.2013, 21:13     Непонятный вывод значений синуса #1
Есть вот такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <cmath>
using namespace std;
 
const double pi = 3.14159265358979;
 
int main()
{
    cout <<sin(pi) <<endl
         <<sin(2*pi) <<endl
         <<sin(pi/2) <<endl
         <<sin(pi*3/2) <<endl;
    system ("PAUSE");
    return 0;
}
Для значений pi/2 pi*3/2 программа выводит значение синуса нормально (1 и -1 соответственно),но для других значений выводит почему-то некорректно.Выводит конечно результаты близкие к нулю,но с какой-то неточностью что-ли.
Вот почему так выводит?
Миниатюры
Непонятный вывод значений синуса  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
scenotaph
120 / 120 / 15
Регистрация: 29.03.2013
Сообщений: 237
24.08.2013, 21:22     Непонятный вывод значений синуса #2
Так как константа ПИ у вас задана все-таки с некоторой погрешностью, то он и выводит бесконечные малые величины в экспоненциальной форме, то бишь ваши первые два числа, синус пи и синус два пи == 0, но выводит вам число в минус пятнадцатой степени, что практически 0 и есть.
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
24.08.2013, 21:31     Непонятный вывод значений синуса #3
Так будет наглядней:
C++
1
    std::cout << std::setprecision( 20 ) << std::setiosflags( std::ios::fixed ) << sin( 3.14159265358979 ) << std::endl;
Для этого нужно добавить заголовок <iomanip>
-=ЮрА=-
Заблокирован
Автор FAQ
24.08.2013, 21:34     Непонятный вывод значений синуса #4
MicM, scenotaph, 100% прав синус вічисляется с помощью разложений в ряд Тейлора и считается он (синус) для определённой точности разложения, где то до -15 степени как раз Хочешь смотри сам
http://codepad.org/awl2eSE7
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
24.08.2013, 21:43     Непонятный вывод значений синуса #5
C++
1
2
#define _USE_MATH_DEFINES
#include <cmath>
И можешь использовать M_PI
Yandex
Объявления
24.08.2013, 21:43     Непонятный вывод значений синуса
Ответ Создать тему
Опции темы

Текущее время: 05:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru