Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/1785: Рейтинг темы: голосов - 1785, средняя оценка - 4.59
4 / 4 / 0
Регистрация: 20.12.2010
Сообщений: 20
1

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

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

Author24 — интернет-сервис помощи студентам
Или может функция, возвращающая точное число Пи
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2010, 01:30
Ответы с готовыми решениями:

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

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

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

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

25
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
20.12.2010, 01:34 2
есть
C
1
M_PI
3
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
20.12.2010, 04:34 3
M_PI - расширение компилятора
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12456 / 7480 / 1753
Регистрация: 25.07.2009
Сообщений: 13,759
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
2
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
20.12.2010, 09:28 5
в том, что в языке нету M_PI, это расширение gcc
less /usr/include/math.h
/M_PI
Код
#if defined __USE_BSD || defined __USE_XOPEN
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12456 / 7480 / 1753
Регистрация: 25.07.2009
Сообщений: 13,759
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
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
20.12.2010, 10:46 7
расширения могут быть определены везде, но они не должны ничему соответствовать
их могут менять и в пределах одного компилятора, в разных его версиях
но самое главное, они могут называться одинаково, а значения разные иметь
и из-за этого в программе появляется неопределённость
1
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
20.12.2010, 12:05 8
accept, по-моему, вы придираетесь. Я лично не верю, что завтра выйдет новая версия моего любимого компилятора, и в ней будет
C
1
#define M_PI       3.16159265358979323846
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12456 / 7480 / 1753
Регистрация: 25.07.2009
Сообщений: 13,759
20.12.2010, 12:45 9

Не по теме:

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

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

Цитата Сообщение от silent_1991
accept, по-моему, вы придираетесь. Я лично не верю, что завтра выйдет новая версия моего любимого компилятора
программа должна быть переносимой, иначе не выйдет что-нибудь там когда-нибудь, и придётся её класть куда-нибудь очень далеко и надолго
0
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
21.12.2010, 07:07 11
accept, ну раз такое дело кто тебе мешает определить через #define что то вроде MyPI с желанной точностью?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
21.12.2010, 07:17 12
ничто не мешает, но это не расширение
расширение может выглядеть одинаково, а работать по-разному
и читать инфу по каждому расширению, в каком компиляторе оно какое, да нафик это надо

понимаешь, вот есть функция strcpy() и вот она есть в стандарте, и хоть что там будут писать какие-нибудь компиляторы, предлагать перейти на похожую функцию, только чуть-чуть другую, да мне оно нафик не надо, потому что я стандарт прочитал, как она работает запомнил, и всё, я знаю где там и что, и поменяться оно может только в новом стандарте, который я естественно на этот счёт просканирую точно также, как первый
2
Эксперт С++
3224 / 1751 / 436
Регистрация: 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;    
}
8
48 / 48 / 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
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
19.05.2013, 21:54 15
Так тебе об этом и говорят. M_PI не является частью стандарта. Какой компилятор?
0
48 / 48 / 14
Регистрация: 30.03.2009
Сообщений: 523
19.05.2013, 21:55 16
lazybiz, от мелкомягких ребят, VS 2010
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
19.05.2013, 21:57 17
C++
1
2
#define _USE_MATH_DEFINES
#include <math.h>
2
1 / 1 / 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
7787 / 6555 / 2983
Регистрация: 14.04.2014
Сообщений: 28,633
11.01.2015, 13:31 19
В VS константа числа пи только с math.h появляется через _USE_MATH_DEFINES, а на cmath, не влияет.
0
1 / 1 / 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.
1
11.01.2015, 13:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2015, 13:37
Помогаю со студенческими работами здесь

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru