Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα ξέρω ότι είναι πολύ απλό θέμα αλλά έχω κολλήσει. Θέλω το πρόγραμμα να εκτυπώνει έναν δεκαδικό αριθμό (τύπου float) με ακρίβεια 2 δεκαδικά ψηφία και 5 συνολικά ψηφία. Δηλαδή όταν δέχεται έναν αριθμό πχ με 9 συνολικά ψηφία να τον κόβει. Το %5.2f δεν είναι γιατί το έψαξα.

Ευχαριστώ για τη βοήθεια σας

Δημοσ.

Ο μόνος λόγος για να μην σου "δουλεύει" το %5.2f είναι όταν το ακέραιο τμήμα του δεκαδικού που του δίνεις είναι μεγαλύτερο του 999, οπότε και θα σου τυπώσει όλα τα ψηφία του ακέραιου τμήματος (και δεν θα μπορούσε να γίνεται κι αλλιώς).

 

Μήπως εννοείς κάτι άλλο;

Δημοσ.

Αν βάλω δηλαδή το 15698.34456 θα μου βγάλει όλο το ακέραιο μέρος (15698.34) και ας είναι περισσότερα από 5 τα συνολικά ψηφία. 

Δημοσ.

Άν θέλεις να σου βγάζει όλο το ακέραιο μέρος και μόνο 2 δεκαδικά βάλε: %.2f

float x = 15698.34456;
printf("%.2f",x);

Αποτέλεσμα
15698.34
Δημοσ.

Όχι ρωτάω αν βάλω %5.2f τότε το 15698.34456 θα εμφανιστεί 15698.34 ενώ θέλω συνολικά να είναι 5 τα ψηφία. Αλλά όπως μου απάντησαν και πιο πάνω δεν γίνεται γιατί είναι μεγαλύτερος ο αριθμός.

Δημοσ.

Ναι όπως είπανε και τα άλλα παιδιά εφόσον ο αριθμός είναι μεγαλύτερος τότε δεν μπορεί να σου κόψει ψηφία. Ένας τρόπος να έχεις πάντα τον ίδιο αριθμό "χαρακτήρων" είναι να χρησιμοποιήσεις την επιστημονική μορφή αλλά οι περισσότεροι βρίσκουν την μορφή άσχημη-δυσνόητη.

 

#include <stdio.h>

int main(void)
{
	double d1 = 15698.34456;
	double d2 = 32.134;
	printf("%.2e %.2e\n", d1, d2);
	printf("%.3e %.3e\n", d1, d2);
	return 0;
}
Έξοδος:
1.57e+04 3.21e+01
1.570e+04 3.213e+01
Όλοι οι αριθμοί ανεξάρτητα από την τιμή τους εμφανίζονται με τον ίδιο αριθμό χαρακτήρων (και ένα ακόμη για πρόσημο αν είναι αρνητικοί) ανάλογα με την ακρίβεια που θέλεις να έχεις.

 

Δεν νομίζω να σου αρέσει η επιστημονική μορφή αλλά την αναφέρω εγκυκλοπαιδικά.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...