Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 355, средняя оценка - 4.72
gira13
4 / 4 / 0
Регистрация: 20.12.2010
Сообщений: 20
#1

Есть ли какая-то константа в С, означающая число Пи - C++

20.12.2010, 01:30. Просмотров 68449. Ответов 25
Метки нет (Все метки)

Или может функция, возвращающая точное число Пи
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2010, 01:30
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Есть ли какая-то константа в С, означающая число Пи (C++):

Есть ли какая-нибудь команда, которая находит минимальное число в массиве?
А то очень сложно сравнивать 100 элементов в ручную Или команда, которая...

Есть ли какая-то функция показывающая, что число уже является мусором
...

Дано трехзначное число. Определить, какая цифра в нем есть больше – первая или последняя.
задано трицифровое число. Как определить, какая цифра в нем есть большей –...

Какой закон распределения имеет случайная величина означающая число извлеченных красных карандашей?
Помогите пожалуйста решить две задачи очень срочно надо решить!ничего не...

Какая константа отвечает за точку в GraphABC?
Какая из констант клавиш отвечает за точку в GraphABC?

Дано натуральное число. Если в нем есть а и в то определить какая правее
Дано натуральное число. Если в нем есть а и в то определить какая правее ...

25
sandye51
программист С++
833 / 592 / 147
Регистрация: 19.12.2010
Сообщений: 2,016
20.12.2010, 01:34 #2
есть
C
1
M_PI
3
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
20.12.2010, 04:34 #3
M_PI - расширение компилятора
0
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,231
20.12.2010, 09:11 #4
Цитата Сообщение от accept Посмотреть сообщение
M_PI - расширение компилятора
В каком смысле?
Код
$ grep M_PI /usr/include/math.h
#define M_PI            3.14159265358979323846
#define M_TWOPI         (M_PI * 2.0)
#define M_PI_2          1.57079632679489661923
#define M_PI_4          0.78539816339744830962
1
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
20.12.2010, 09:28 #5
в том, что в языке нету M_PI, это расширение gcc
less /usr/include/math.h
/M_PI
Код
#if defined __USE_BSD || defined __USE_XOPEN
0
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,231
20.12.2010, 10:18 #6
accept, ну в мелкостудии оно тоже определено, правда, как у них водится, немного по-своему...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#if defined(_USE_MATH_DEFINES) && !defined(_MATH_DEFINES_DEFINED)
#define _MATH_DEFINES_DEFINED
 
/* Define _USE_MATH_DEFINES before including math.h to expose these macro
 * definitions for common math constants.  These are placed under an #ifdef
 * since these commonly-defined names are not part of the C/C++ standards.
 */
 
/* Definitions of useful mathematical constants
 * M_E        - e
 * M_LOG2E    - log2(e)
 * M_LOG10E   - log10(e)
 * M_LN2      - ln(2)
 * M_LN10     - ln(10)
 * M_PI       - pi
 * M_PI_2     - pi/2
 * M_PI_4     - pi/4
 * M_1_PI     - 1/pi
 * M_2_PI     - 2/pi
 * M_2_SQRTPI - 2/sqrt(pi)
 * M_SQRT2    - sqrt(2)
 * M_SQRT1_2  - 1/sqrt(2)
 */
 
#define M_E        2.71828182845904523536
#define M_LOG2E    1.44269504088896340736
#define M_LOG10E   0.434294481903251827651
#define M_LN2      0.693147180559945309417
#define M_LN10     2.30258509299404568402
#define M_PI       3.14159265358979323846
#define M_PI_2     1.57079632679489661923
#define M_PI_4     0.785398163397448309616
#define M_1_PI     0.318309886183790671538
#define M_2_PI     0.636619772367581343076
#define M_2_SQRTPI 1.12837916709551257390
#define M_SQRT2    1.41421356237309504880
#define M_SQRT1_2  0.707106781186547524401
 
#endif  /* _USE_MATH_DEFINES */
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
20.12.2010, 10:46 #7
расширения могут быть определены везде, но они не должны ничему соответствовать
их могут менять и в пределах одного компилятора, в разных его версиях
но самое главное, они могут называться одинаково, а значения разные иметь
и из-за этого в программе появляется неопределённость
1
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
20.12.2010, 12:05 #8
accept, по-моему, вы придираетесь. Я лично не верю, что завтра выйдет новая версия моего любимого компилятора, и в ней будет
C
1
#define M_PI       3.16159265358979323846
0
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,231
20.12.2010, 12:45 #9

Не по теме:

Цитата Сообщение от accept Посмотреть сообщение
но самое главное, они могут называться одинаково, а значения разные иметь
Это как у Задорнова: " ...Американцы решили считать число пи за 3, чтобы считать было легче." ;)

Да никто не спорит, что константа пи - не часть языка С/С++, но с вероятностью 99.(9)% она будет определена в math.h или во включаемом им заголовке и значению её удивляться не прийдётся.
1
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
21.12.2010, 06:34 #10
да, можно определить её как 3.14 и ничего удивительного
просто в программе что-то там будет округляться совсем немного, и ракета полетит не туда чуть-чуть

Цитата Сообщение от silent_1991
accept, по-моему, вы придираетесь. Я лично не верю, что завтра выйдет новая версия моего любимого компилятора
программа должна быть переносимой, иначе не выйдет что-нибудь там когда-нибудь, и придётся её класть куда-нибудь очень далеко и надолго
0
агерон
313 / 279 / 57
Регистрация: 12.10.2009
Сообщений: 1,086
21.12.2010, 07:07 #11
accept, ну раз такое дело кто тебе мешает определить через #define что то вроде MyPI с желанной точностью?
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
21.12.2010, 07:17 #12
ничто не мешает, но это не расширение
расширение может выглядеть одинаково, а работать по-разному
и читать инфу по каждому расширению, в каком компиляторе оно какое, да нафик это надо

понимаешь, вот есть функция strcpy() и вот она есть в стандарте, и хоть что там будут писать какие-нибудь компиляторы, предлагать перейти на похожую функцию, только чуть-чуть другую, да мне оно нафик не надо, потому что я стандарт прочитал, как она работает запомнил, и всё, я знаю где там и что, и поменяться оно может только в новом стандарте, который я естественно на этот счёт просканирую точно также, как первый
2
Mr.X
Эксперт С++
3178 / 1705 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
21.12.2010, 07:25 #13
Лучший ответ Сообщение было отмечено как решение

Решение

C++
1
2
3
4
5
6
7
8
9
#include <cmath>
#include <iomanip>
#include <iostream>
int main()
{
    std::cout << std::setprecision(20)
              << acos(-1.0)
              << std::endl;    
}
7
nullpointer
46 / 46 / 14
Регистрация: 30.03.2009
Сообщений: 523
19.05.2013, 21:48 #14
Не могу понять в чем дело. Подключаю math.h и пишу в функции
C++
1
return pow(4 * M_PI * fabs(x - y), -1) - pow(4 * M_PI * fabs(x - yy), -1);
Компилятор начинает упорно ругаться на M_PI как на необъявленный идентификатор.
0
castaway
Эксперт С++
4927 / 3034 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
19.05.2013, 21:54 #15
Так тебе об этом и говорят. M_PI не является частью стандарта. Какой компилятор?
0
nullpointer
46 / 46 / 14
Регистрация: 30.03.2009
Сообщений: 523
19.05.2013, 21:55 #16
lazybiz, от мелкомягких ребят, VS 2010
0
castaway
Эксперт С++
4927 / 3034 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
19.05.2013, 21:57 #17
C++
1
2
#define _USE_MATH_DEFINES
#include <math.h>
1
Aiirh
0 / 0 / 0
Регистрация: 15.01.2014
Сообщений: 2
11.01.2015, 11:42 #18
C++
1
2
3
4
5
#define _USE_MATH_DEFINES
#include "ATLComTime.h"
#include <cmath>
 
std::cout << M_PI;
0
nmcf
6247 / 5559 / 2528
Регистрация: 14.04.2014
Сообщений: 23,371
11.01.2015, 13:31 #19
В VS константа числа пи только с math.h появляется через _USE_MATH_DEFINES, а на cmath, не влияет.
0
Aiirh
0 / 0 / 0
Регистрация: 15.01.2014
Сообщений: 2
11.01.2015, 13:37 #20
Возможно и так, не буду спорить. Но если убрать любую из этих строк в VS2013 - M_PI не работает

Из MSDN:
C
1
2
3
4
5
#define _USE_MATH_DEFINES // for C++
#include <cmath>
 
#define _USE_MATH_DEFINES // for C
#include <math.h>
Math Constants are not defined in Standard C/C++. To use them, you must first define _USE_MATH_DEFINES and then include cmath or math.h.
The file ATLComTime.h includes math.h when your project is built in Release mode. If you use one or more of the math constants in a project that also includes ATLComTime.h, you must define _USE_MATH_DEFINES before you include ATLComTime.h.
0
11.01.2015, 13:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2015, 13:37
Привет! Вот еще темы с решениями:

Какой закон распределения вероятностей имеет случайная величина,означающая число белых шаров среди извлеченных шаров
В урне 15 шаров, из них 8 белых. Наудачу извлекают шесть шаров помогите...

Ввод последовательности целых чисел, конечным числом является число С. (константа, число оповещающее об остановке ввода)
Необходимо написать на делфи! Сам я программист по плюсам и совершенно не...

Есть ли встроенная константа Пи
Ребят, подскажите неужели в вба нет встроенной константы Пи? пробовал и Pi и...

Дано натуральное число. Если в нем есть цифры a и b, то определить, какая из них расположена в числе правее
Дано натуральное число. Если в нем есть цифры a и b, то определить, какая из...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru