ΠΛΗΡΟΦΟΡΙΕΣ: Διευκρίνιση των ο καθορισμός μορφής "g" για printf()

Αποποίηση ευθυνών για περιεχόμενο της Γνωσιακής βάσης που έχει αποσυρθεί

Αυτό το άρθρο αφορά προϊόντα για τα οποία η Microsoft δεν παρέχει πλέον υποστήριξη. Συνεπώς, το παρόν άρθρο παρέχεται "ως έχει" και δεν θα ενημερώνεται πλέον.

Σύνοψη


Γ της Microsoft, η μορφή εξόδου που προκύπτουν από το προσδιοριστικό μορφής printf() "g" ταιριάζει ακριβώς με τη μορφή εξόδου που προκύπτουν από Καθορισμός μορφής "e" ή "f". Η τεκμηρίωση αναφέρει ότι "g" χρησιμοποιεί το "f" ή "e" μορφή, ανάλογα με το ποια είναι πιο συμπαγής. Αυτό ισχύει με την έννοια της γενικής μορφής, αλλά υπάρχουν κάποιες διαφορές.


Η τιμή ακριβείας ερμηνεύεται με διαφορετικό τρόπο σε μορφή "g" από "f" μορφή. Το εγχειρίδιο εξηγεί αυτή τη διαφορά. Η ακρίβεια για "f" Καθορίζει τον αριθμό των ψηφίων μετά την υποδιαστολή. Η ακρίβεια για "g" Καθορίζει τον μέγιστο αριθμό των σημαντικών ψηφίων που εκτυπώνεται. Το παρακάτω παράδειγμα δείχνει τη διαφορά που περιγράφονται στη ΣΎΝΟΨΗ:

Δείγμα κώδικα

#include <stdio.h>
void main (void)
{
double x = 2.0/3.0; /* 0.666... */
double y;

y = 6.0 + x;
printf ("%.4g\n", y);
printf ("%.4f\n", y);
printf ("%.4e\n\n", y);

y = 66.0 + x;
printf ("%.4g\n", y);
printf ("%.4f\n", y);
printf ("%.4e\n\n", y);

y = 666.0 + x;
printf ("%.4g\n", y);
printf ("%.4f\n", y);
printf ("%.4e\n\n", y);

y = 6666.0 + x;
printf ("%.4g\n", y);
printf ("%.4f\n", y);
printf ("%.4e\n\n", y);

y = 66666.0 + x;
printf ("%.4g\n", y); /* switches to "e" notation here */
printf ("%.4f\n", y);
printf ("%.4e\n\n", y);
}
Τα αποτελέσματα του παραπάνω προγράμματος είναι σωστή, όπως φαίνεται παρακάτω:

6.667
6.6667
6.6667e+000

66.67
66.6667
6.6667e+001

666.7
666.6667
6.6667e+002

6667
6666.6667
6.6667e+003

6.667e+004
66666.6667
6.6667e+004
Ιδιότητες

Αναγνωριστικό άρθρου: 43392 - Τελευταία αναθεώρηση: 17 Ιαν 2017 - Αναθεώρηση: 1

Σχόλια