Αριθμός δεκαδικών ψηφίων

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
bakalogatos
Δημοσιεύσεις: 15
Εγγραφή: 05 Ιαν 2008 22:42

Αριθμός δεκαδικών ψηφίων

Δημοσίευση από bakalogatos » 27 Αύγ 2008 15:57

Θα ήθελα να ρωτήσω αν υπάρχει συνάρτηση σε C η οποία να κρατάει συγκεκριμένο αριθμό απο δεκαδικά ψηφία.
Δλδ αν έχω έναν αριθμό x = 1.455556 να θέλω να αποθηκεύω σε ένα άλλο αριθμό y τον χ με 3 δεκαδικά ψηφία.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Αριθμός δεκαδικών ψηφίων

Δημοσίευση από dva_dev » 27 Αύγ 2008 22:00

Με στρογγυλοποίηση ή αποκοπή στο 3ο δεκαδικό;

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Αριθμός δεκαδικών ψηφίων

Δημοσίευση από soteres2002 » 28 Αύγ 2008 03:04

Έτοιμη συνάρτηση από την libc δεν υπάρχει για αυτό το σκοπό. Όμως, αν δεν θες να αποθηκεύσεις τις τιμές αυτές σε μεταβλητές αλλά να τις τυπώσεις, μπορείς να χρησιμοποιήσεις ειδικούς μορφοποιητές για αριθμούς κινητής υποδιαστολής. πχ για ακρίβεια 3 δεκαδικών έχεις printf("%.3f", somefloat); .

Επίσης, μπορείς να φτιάξεις απλά τη δική σου συνάρτηση που κάνει αυτή τη δουλειά μετατρέποντας σε string τον αριθμό στη μορφή που θες και πίσω σε αριθμό (sprintf/atof). Στην κλήση της πρώτης συνάρτησης χρησιμοποιείς στον μορφοποιητή την ακρίβεια των δεκαδικών που θέλεις κάθε φορά. Υπάρχει και αριθμητικός τρόπος για να το κάνεις, αλλά δεν έχει νόημα τις περισσότερες φορές αφού υπάρχουν μορφοποιητές για αυτή τη δουλειά άσε που μπορεί να υπάρξουν σε σφάλματα σε ορισμένες περιπτώσεις. Hint: να αφαιρέσεις από τον αρχικό αριθμό, τον αριθμό που προκύπτει μέσω του αρχικού αν βάλεις μηδενικά σε όλα τα ψηφία μέχρι το κ-στό ψηφίο στο κλασματικό μέρος που θέλεις να έχεις ακρίβεια. Τα υπόλοιπα ψηφία που μένουν φτιάχνουν νέο αριθμό, που αν τον αφαιρέσεις από τον αρχικό έχεις την επιθυμητή ακρίβεια (απλά μένουν κάποια μηδενικά στο τέλος, δε σε νοιάζει).

πχ 1,234. Για ακρίβεια 2 δεκαδικών ψηφίων αφαιρώ με 0,004 και έχω 1,230. Αυτό ισχύει όταν δεν σε ενδιαφέρει να στρογγυλοποιήσεις, αλλά απλώς να αποκόψεις κάποια ψηφία.

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες