Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Function ΟΛΟΓΡΑΦΩΣ

Îåêßíçóå áðü ôï ìÝëïò Chris. Τελευταία δημοσίευση από το μέλος YourFriend στις 19-08-2013, 20:26. Υπάρχουν 16 απαντήσεις.
Σελίδα 2 από 2 (17 εγγραφές)   < 1 2
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  15-08-2008, 16:17 44133 σε απάντηση της 44129

    Απ: Function ΟΛΟΓΡΑΦΩΣ

    Αυτό θα βόλευε αν μπορούσες να αναπαραστήσεις το ποσό που θέλεις σε 48 μόνο bits - και όλες τις πράξεις που θέλεις να κάνεις με αυτό, π.χ. πολλαπλασιασμούς. Διαφορετικά στους πολλαπλασιασμούς θα κινδύνευες από overflow, καθώς ένας πολλαπλασιασμός δύο αριθμών μπορεί να χρειαστεί μέχρι και το άθροισμα των ψηφίων των δύο αριθμών. Το 2^48 μπορεί να φαντάζει αρκετό για πράξεις με χρήματα, το 2^24 όμως είναι μόλις 17 εκατομμύρια παρά κάτι. Θα μου πεις, πότε πολλαπλασιάζεις εκατομμύρια με εκατομμύρια? Δεν ξέρεις, οπότε ο κώδικας σου θα πρέπει να κάνει συνέχεια ελέγχους για να βεβαιωθεί ότι δεν υπάρχει κίνδυνος overflow. Τελικά, απλά δεν αξίζει τον κόπο αν έχεις υπολογιστή και γλώσσα που υποστηρίζει άλλους τρόπους αναπαράστασης, κάτι που αναφέρει και το άρθρο του wikipedia.

    Εξάλλου, 2^48 είναι αρκετό ίσως για ένα ισολογισμό πολυεθνικής σε ευρώ ή δολλάρια, δεν κάνει όμως για ισολογισμό σε ... δραχμές ή Yen. Από την άλλη, ο decimal είναι built-in τύπος στα 128 bits, δεν είναι floating-point οπότε δεν υπάρχει κίνδυνος απώλειας ακρίβειας, και δεν χρειάζεται ταρζανιές στις πράξεις ακριβώς επειδή είναι built-in. Γι αυτό και χρησιμοποιείται ευρέως για νομισματικές τιμές. Τέλος, επειδή ακριβώς είναι ευρέως διαδεδομένος, είναι και αναμενόμενος είτε από άλλους προγραμματιστές στην εφαρμογή σου είτε από όσους χρησιμοποιήσουν την εφαρμογή σου μέσω κάποιου API. Η χρήση ενός μή αναμενόμενου τύπου είναι πρόβλημα εκτός και αν αυτό προσθέτει σημαντικά πλεονεκτήματα.

    Η χρήση ενός τύπου Currency είναι χρήσιμη για άλλους λόγους. Καταρχήν, ένα χρηματικό ποσό δεν έχει απλά μία τιμή αλλά και ένα νόμισμα. Είναι λάθος να προσθέσεις ποσά διαφορετικών νομισμάτων εκτός και αν τα μετατρέψεις από το ένα στο άλλο. Αυτό όμως προϋποθέτει τη χρήση μίας ισοτιμίας για τη μετατροπή. Επιπλέον, κάποιες πράξεις πρέπει να γίνονται με αυστηρά καθορισμένο αριθμό δεκαδικών, ακόμα και αν αυτό οδηγεί σε απώλεια ακρίβειας. Ο λόγος είναι ότι αυτός ο αριθμός δεκαδικών χρησιμοποιείται και στη λογιστική και αν χρησιμοποιήσεις διαφορετικό αριθμό, 16 όπως προτείνεις, θα οδηγηθείς σε διαφορετικά αποτελέσματα και πιθανές διαφορές. Αρκετές από αυτές μπορούν να οριστούν σε ένα τύπο Currency, άλλες θα πρέπει να οριστούν σε κάποια άλλη βιβλιοθήκη με οικονομικές συναρτήσεις, γιατί κάποια πράγματα τα οποία δεν αλλάζουν ποτέ .... αλλάζουν.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  19-08-2013, 20:26 73931 σε απάντηση της 44133

    Απ: Function ΟΛΟΓΡΑΦΩΣ

    και σε Java παιδες....

    https://github.com/EvanCoh/monetaryAmountToGreek
Σελίδα 2 από 2 (17 εγγραφές)   < 1 2
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems