Найти число 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, а также не указаны их типы данных.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д