mdtgr:Σε μια φόρμα (vb2005) έχω το textbox μου που χρησιμεύει για την εισαγωγή τιμής σε ευρώ με τρία δεκαδικά.
Η απορία μου είναι ότι την τιμή την περνάω σε μια μεταβλητή την οποία μπορώ να την ορίσω ως Double ή Decimal (ανάλογα με την ακρίβεια των υπολογισμών αν έχω καταλάβει καλά) όταν όμως πάω να φτιάξω τον πίνακα σε SQL βάση βλάπω ότι το αντίστοιχο πεδίο μπορώ να το ορίσω μόνο ως Decimal.
Χρειάζομαι τη βοήθειά σας (πάλι) για να καταλάβω την σχέση μεταξύ τιμών που αφορούν currency και πως αυτές ορίζονται και διαχειρίζονται τόσο σε VB όσο και σε SQL(Express).
Τα Double και Decimal στο .NET ορίζουν αριθμούς κινητής υποδιαστολής. π.χ. το double που καταλαμβάνει έως 8 ψηφία, τα οποία μπορεί να είναι όλα πριν την υποδιαστολή ή όλα μετά ή 4 πριν και 4 μετά. Το Decimal είναι διπλάσιο του double. Στον sql server το decimal δεν έχει κινητή υποδιαστολή, μια που δηλώνεις ακριβώς τον αριθμό δεδαδικών που υποστηρίζει, με την βοήθεια της ιδιότητας precision της αντίστοιχης στήλης. Υπάρχουν επίσης οι τύποι float και real στον sql server, που είναι κινητής υποδιαστολής. Το float μπορεί να είναι από 1 έως 53 bit (δηλαδή χωράει έως και double αριθμούς του .net), ενώ το real είναι 4 bytes.
Υπάρχουν και άλλες επιλογές, ανάλογα με την ακρίβεια και το μέγεθος των δεδομένων που έχεις. Διάβασε αυτό
mdtgr:
Θα ήθελα αν γίνετε να συμπεριλάβετε και τι ακριβώς γίνεται με τα trailing zeroes επειδή θέλω να τα εμφανίζω όπου αυτό χρειάζεται.
Αυτό το θέμα δεν πρέπει να σε απασχολήσει σε επίπεδο βάσης δεδομένων. Εκεί θα αποθηκεύεις την τιμή σου σε αριθμητικό πεδίο και αν θέλεις σε κάποια φόρμα να εμφανίζεται με μηδενικά, θα το κάνεις εκεί. π.χ. αν γράψεις debug.writeline(string.format("{0:000000.00}", 43.3)) θα πάρεις σαν αποτέλεσμα το 000043,30
Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.