Найти число Pi методом Монте-Карло. Ошибка в выводе числа - C (СИ)
Формулировка задачи:
Задача состоит в том, чтоб найти число Пи методом Монте-Карло плюс куча мелких заданий по этой программе. Кидаем монетку наугад, и смотрим попала или нет она в круг.
Собственно нашел формулу и по ней сделал задание. Но не могу понять, почему число Пи выводит целым? (всегда округляет до 3,00000..). Помогите в решении проблемы. Заранее спасибо.
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <time.h>
- int main()
- {
- int i,n1=1000,n2=0,n0=0,p;
- float a,b,m,np;
- double Pi;
- np=n1*0.1;
- srand (500);
- for (i=1;i<=n1;i++){ //расчёт
- a = rand() % 100 * 0.01;
- b = rand() % 100 * 0.01;
- m = a*a+b*b; //формула
- printf ("%f %f %f %d \n", a,b,m,n2);
- }
- if (m<=1){
- n2++;
- }
- }
- Pi = 4 * n2 / n1;
- printf ("Pi = %f\n",Pi); //проблема
- system("PAUSE");
- return 0;
- }
Решение задачи: «Найти число Pi методом Монте-Карло. Ошибка в выводе числа»
textual
Листинг программы
- Pi = (double)4 * n2 / n1;
Объяснение кода листинга программы
- Создается переменная
Pi
типа double (число с плавающей точкой), и ей присваивается значение, равное 4 умноженному на n2, деленному на n1. - В данном коде не указаны значения переменных n1 и n2, а также не указаны их типы данных.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д