#include const double PI = 3.141592653589793; void main(void) { long long dividende = 22; long long diviseur = 7; double fraction = (double) dividende / diviseur; double delta = fabs(PI - fraction); printf("%8lld %8lld\n", dividende, diviseur); printf("%20.18lf %20.18lf\n", PI, fraction); printf("%20.18lf\n\n", delta); int v; double dInf; double dSup; do { diviseur++; v = (int) (diviseur * PI); double vInf = (double) v / diviseur; double vSup = (double) (v + 1) / diviseur; dInf = fabs(vInf - PI); dSup = vSup - PI; } while ((dInf >= delta) && (dSup >= delta) && (delta != 0)); dividende = dInf < dSup ? v : v + 1; fraction = (double) dividende / diviseur; delta = fabs(PI - fraction); printf("%8lld %8lld\n", dividende, diviseur); printf("%20.18lf %20.18lf\n", PI, fraction); printf("%20.18lf\n", delta); }