Λιγο βοήθεια με τη C

Giorgos Keramidas keramida at ceid.upatras.gr
Fri Jun 2 22:26:23 EEST 2006


On 2006-06-02 21:27, Dimitris Mexis <m65 at vivodinet.gr> wrote:
> Oua! Ego apla tin array_count_values tis PHP, ithela na ftiaxo oxi na
> vretho me ena keri pano se kranio, kai na diavazo books epi papirous :-)

Δυστυχώς, όποιος μπλέκει με floating-point πρέπει να υποστεί και τις
συνέπειες (δηλαδή το αντίστοιχο διάβασμα σχετικά με την αναπαράσταση των
floating-point αριθμών).  Αλλιώς, υπάρχει περίπτωση να γράψεις
προγράμματα όπως το παρακάτω:

    #include <stdio.h>

    int
    main(void)
    {
            double x, y, z;
            int k;

            x = 7.5;
            y = 2.5;

            for (k = 0; k < 20; k++) {
                    z = x / y;
                    printf("%20.18lf %20.18lf %20.18lf\n", x, y, z);
                    x /= 10;
                    y /= 10;
            }
            return 0;
    }

Και να φρικάρεις αν δεις αποτελέσματα σαν αυτά:

    $ ./mexis
    7.500000000000000000 2.500000000000000000 3.000000000000000000
    0.750000000000000000 0.250000000000000000 3.000000000000000000
    0.074999999999999997 0.025000000000000001 2.999999999999999556
    0.007500000000000000 0.002500000000000000 3.000000000000000000
    0.000750000000000000 0.000250000000000000 3.000000000000000000
    0.000075000000000000 0.000025000000000000 3.000000000000000000
    0.000007500000000000 0.000002500000000000 3.000000000000000000
    0.000000750000000000 0.000000250000000000 3.000000000000000000
    0.000000075000000000 0.000000025000000000 2.999999999999999556
    0.000000007500000000 0.000000002500000000 3.000000000000000000
    0.000000000750000000 0.000000000250000000 2.999999999999999556
    0.000000000075000000 0.000000000025000000 2.999999999999999556
    0.000000000007500000 0.000000000002500000 3.000000000000000000
    0.000000000000750000 0.000000000000250000 3.000000000000000000
    0.000000000000075000 0.000000000000025000 3.000000000000000000
    0.000000000000007500 0.000000000000002500 3.000000000000000000
    0.000000000000000750 0.000000000000000250 3.000000000000000444
    0.000000000000000075 0.000000000000000025 3.000000000000000000
    0.000000000000000008 0.000000000000000003 3.000000000000000444
    0.000000000000000001 0.000000000000000000 3.000000000000000444
    $

Προσοχή στην τρίτη γραμμή και την τρίτη στήλη...




More information about the Linux-greek-users mailing list