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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MicM
 Аватар для MicM
820 / 487 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
#1

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

24.08.2013, 21:13. Просмотров 570. Ответов 4
Метки нет (Все метки)

Есть вот такой код:
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 соответственно),но для других значений выводит почему-то некорректно.Выводит конечно результаты близкие к нулю,но с какой-то неточностью что-ли.
Вот почему так выводит?
Миниатюры
Непонятный вывод значений синуса  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2013, 21:13     Непонятный вывод значений синуса
Посмотрите здесь:

C++ вывод значений Enum
C++ Вывод значений на экран
C++ Непонятный вывод структуры через функцию
C++ Непонятный вывод
C++ Вычислить значение заданной функци на данном интервале с заданным шагом. Осуществить вывод значений аргумента и результатов вычислений значений функ
Вывод максимального и минимального значений C++
Вывод значений переменных C++
C++ Непонятный вывод: постфиксные и префиксные инкремент/декремент
C++ Вывод таблицы значений фенкций
C++ Вывод значений по графику функций
C++ Вывод значений в таблицу
C++ Некорректный вывод значений

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
scenotaph
120 / 120 / 15
Регистрация: 29.03.2013
Сообщений: 237
24.08.2013, 21:22     Непонятный вывод значений синуса #2
Так как константа ПИ у вас задана все-таки с некоторой погрешностью, то он и выводит бесконечные малые величины в экспоненциальной форме, то бишь ваши первые два числа, синус пи и синус два пи == 0, но выводит вам число в минус пятнадцатой степени, что практически 0 и есть.
castaway
Эксперт С++
4870 / 3009 / 370
Регистрация: 10.11.2010
Сообщений: 11,059
Записей в блоге: 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     Непонятный вывод значений синуса
Ответ Создать тему
Опции темы

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