freestuff.gr αρχική σελίδα
 FAQFAQ    ΑναζήτησηΑναζήτηση   Λίστα ΜελώνΛίστα Μελών   Ομάδες ΜελώνΟμάδες Μελών   <b>Εγγραφή Μέλους</b>Εγγραφή Μέλους 
 ΠροφίλΠροφίλ   Επιλογές μέλους Επιλογές   Τα bookmarks μου Τα bookmarks μου   Προσωπικά μηνύματαΠροσωπικά μηνύματα 
  διαφήμιση  

Καλώς ήρθατε στο forum μας! Για να συμμετάσχετε στις συζητήσεις θα πρέπει να είσαστε μέλος. Γίνετε μέλος τώρα!.

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


 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Moderators:  Super-Moderators, WebDev Moderators
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [3 Μηνύματα]       Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
ΑποστολέαςΜήνυμα
bakalogatos


Μέλος από: 05 Ιαν 2008
Μηνύματα: 15

View users profile
ΜήνυμαΣτις: 27 Αυγ 2008 14:57    Θέμα: Αριθμός δεκαδικών ψηφίων Απάντηση με παράθεση  Mark this post and the followings unread

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

Μέλος από: 16 Σεπ 2005
Μηνύματα: 256+

View users profile Visit posters website
blog deviantART facebook linkedin 
ΜήνυμαΣτις: 27 Αυγ 2008 21:00    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Με στρογγυλοποίηση ή αποκοπή στο 3ο δεκαδικό;
soteres2002
S. & H. Moderator

Μέλος από: 05 Μαρ 2004
Βοηθήματα: 1
Νέα: 1
Scripts: 1
Μηνύματα: 256+

Περιοχή: Ιωάννινα
View users profile
ΜήνυμαΣτις: 28 Αυγ 2008 02:04    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

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

πχ 1,234. Για ακρίβεια 2 δεκαδικών ψηφίων αφαιρώ με 0,004 και έχω 1,230. Αυτό ισχύει όταν δεν σε ενδιαφέρει να στρογγυλοποιήσεις, αλλά απλώς να αποκόψεις κάποια ψηφία.
Εμφάνιση Μηνυμάτων:   
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [3 Μηνύματα] Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Τώρα είναι 24 Ιαν 2017 09:04 | All times are UTC + 2


Email This Page to Someone! add to Favorites

     Powered by p h p B B © 2001,2005 p h p B B Group
Για άμεση επικοινωνία με τον διαχειριστή του freestuff.gr στο email: freestuff.gr(παπάκι)gmail.com


Copyright © 1999-2013 Freestuff.gr All Rights Reserved  
Version Aegean, designed by N. Tsaganos