TheGreek Δημοσ. 9 Φεβρουαρίου 2007 Δημοσ. 9 Φεβρουαρίου 2007 Ο τελεστής % υπολογίζει το ακέραιο υπόλοιπο διαίρεσης. Εχω ένα a π.χ. 4.5 επί 10 εις την 140 και b=136. Πως θα τις δηλώσω τις μεταβλητές για να μπορέσω να κάνω c=a%b χωρίς πρόβλημα?
Pablo_Hasan Δημοσ. 9 Φεβρουαρίου 2007 Δημοσ. 9 Φεβρουαρίου 2007 οπως και να τις δηλωσεις αν ειναι στην 140 θα ειναι παντα out of range. Αυτο που μπορεις να κανεις ειναι να γραψεις ενα υποπρογραμμα που θα παραγοντοποιει την δυναμη κανοντας την διαιρεση με πιο μικρους αριθμους...
PATRINOS06 Δημοσ. 9 Φεβρουαρίου 2007 Δημοσ. 9 Φεβρουαρίου 2007 η πραξη (4.5*10)^140 παραγει πολυ μεγαλο αριθμο. σε μια δικη μου περιπτωση που ηθελα να δουλεψω μεγαλους αριθμους ο χρηστης dop μου προτεινε αυτο: Η καλύτερή σου λύση είναι να βρεις κάποια βιβλιοθήκη που να παρέχει Big Integers - ουσιαστικά είναι βιβλιοθήκες που χρησιμοποιούν δυναμικά arrays για να παρέχουν όσο μεγάλους int ακόμα και floats θες.
Directx Δημοσ. 10 Φεβρουαρίου 2007 Δημοσ. 10 Φεβρουαρίου 2007 Ο τελεστής % υπολογίζει το ακέραιο υπόλοιπο διαίρεσης. Εχω ένα a π.χ. 4.5 επί 10 εις την 140 και b=136. Πως θα τις δηλώσω τις μεταβλητές για να μπορέσω να κάνω c=a%b χωρίς πρόβλημα? Ο τελεστής % (modulus) δεν μπορεί να εφαρμοσθεί σε float ή double, long double μεταβλητές, μπορείς όμως να χρησιμοποιήσεις τις αντίστοιχες εντολές fmod (για double) και fmodl (για long double), πχ. fmod(a, κτλ. Τέλος με τις modf (double) και modfl (long double) μπορείς να σπάσεις τον floating-point αριθμό στα δυο κομμάτια του (ακέραιο και υπόλοιπο). Και οι τέσσερις ρουτίνες είναι δηλωμένες στο math.h Σχετικά με το μέγεθος των αριθμών, η long double προσφέρει αριθμούς μέχρι 80bits (ακρίβια 18 ψηφίων για τον Compiler μου) από εκεί και πέρα ότι είπαν οι προηγούμενοι φίλοι. Καλή συνέχεια.
chiossif Δημοσ. 10 Φεβρουαρίου 2007 Δημοσ. 10 Φεβρουαρίου 2007 Αν το 20%3 και το 200%3 έχουν διαφορετικό αποτέλεσμα ΤΟΤΕ έχεις πρόβλημα.
Pablo_Hasan Δημοσ. 10 Φεβρουαρίου 2007 Δημοσ. 10 Φεβρουαρίου 2007 οπως σου ειπα και πιο πριν η διαιρεση modulus γινεται αν παραγοντοποιησεις την δυναμη. το 140 = 2^7 + 2^3 + 2^2 > (4.5*10)^140%136= (((10^2%136)^7%136)*((10^2%136)^3%136)*((10^2%136)^2%136)*4.5%136 =72 δοκιμασε το
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.