Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > [ Ερωτήματα ] Λάθος υπολογισμός σε ερώτημα

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 09-11-20, 12:00
Όνομα: Κώστας
Έκδοση λογισμικού Office: Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 14-09-2010
Μηνύματα: 13
Προεπιλογή Λάθος υπολογισμός σε ερώτημα

έχω έναν πίνακα με παραγγελίες, περιλαμβάνει την τιμή και την ποσότητα. Και τα 2 πεδία στον πίνακα είναι τύπου Number με field size single και 2 decimals.
Σε μία εγγραφή έχω 3,7 στην ποσότητα και 13 στην τιμή. Όταν όμως σε κάποιο query υπολογίζω το γινόμενο μου εμφανίζει το αποτέλεσμα 48,1000022888184 αντί για 48,1.
Ο μόνος τρόπος που έχω βρει για να το λύσω είναι να κάνω φορματ τα πεδία των αποτελεσμάτων να εμφανίζουν 2 δεκαδικά. Σε όλα τα νέα query όμως εμφανίζει το λάθος αποτέλεσμα χωρίς να καταλαβαίνω γιατί.
Διέγραψα την εγγραφή και την έφτιαξα πάλι. Δεν αλλάζει τίποτα. Αφαίρεσα τελείως το προϊόν. Τίποτα. Όποτε προσθέτω μία νέα εγγραφή μου βγάζει λάθος τον υπολογισμό.
προσθεσα νέα στήλη στον πίνακα την μετονόμασα και συνεχίζει να έχει το ίδιο πρόβλημα. ό,τι τιμή και να βάλω αν έχει δεκαδικά ο υπολογισμός βγαίνει λάθος ακόμα κι αν η ποσότητα είναι 1 π.χ. 1Χ2,4 = 2,40000009536743
έφτιαξα νέο πίνακα με τυχαίες τιμές το ίδιο.
Για να μην τρελαθώ, έχεις κάποιος ιδέα γιατί συμβαίνει αυτό;
Απάντηση με παράθεση
  #2  
Παλιά 10-11-20, 10:57
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλημέρα

Για την αποθήκευση των αριθμών στον υπολογιστή, χρησιμοποιούνται ακολουθίες των ψηφίων 0 και 1 (δυαδικό σύστημα).

Επειδή οι ακολουθίες δεν μπορεί να έχουν άπειρα ψηφία (0, 1), υπάρχουν περιπτώσεις που οι αριθμοί δεν αποθηκεύονται με απόλυτη ακρίβεια, αλλά κατά προσέγγιση.

Αυτό δημιουργεί προβλήματα, όπως αυτό που αναφέρεις.

Στο σύνδεσμο: https://www.google.com/search?q=%CE%...hrome&ie=UTF-8 μπορείς να βρεις λεπτομέρειες.

Οι προγραμματιστές γνωρίζουν το πρόβλημα και ανάλογα με την περίπτωση, το αντιμετωπίζουν.

Στην περίπτωσή σου θα πρότεινα να δημιουργήσεις στον πίνακα ένα υπολογιζόμενο πεδίο με τη βοήθεια της συνάρτησης Round και να χρησιμοποιείς αυτό στα ερωτήματα.

Δες το συνημμένο
Συνημμένα Αρχεία
Τύπος Αρχείου: accdb acRound.accdb (576,0 KB, 6 εμφανίσεις)
Απάντηση με παράθεση
  #3  
Παλιά 11-11-20, 09:13
Όνομα: Κώστας
Έκδοση λογισμικού Office: Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 14-09-2010
Μηνύματα: 13
Προεπιλογή

Καταλαβαίνω αυτό που λες, είμαι μηχανικός πληροφορικής.Η ακρίβεια θα ήταν ένα προβλημα αν αποθήκευα έναν αριθμό με πολλά ψηφία π.χ. 3.478237832 και πολλαπλασίαζα πάλι με αριθμό πολλών ψηφίων. Εδώ όμως συζητάμε για 2 αριθμούς ο ένας με ένα δεκαδικό κι άλλος χωρίς δεκαδικό.
Δεν μπορώ να καταλάβω πως το 1 Χ 2,4 π.χ. φέρνει αποτέλεσμα 2,39747683
Προφανώς θα μπορούσα να κάνω round αλλά δεν έχει λογική.
Απάντηση με παράθεση
  #4  
Παλιά 11-11-20, 10:33
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Καλημέρα Κώστα!

Κατά κανόνα, δεν θα υπάρχει λάθος όταν το πλήθος των δεκαδικών ψηφίων ενός αριθμού δεν υπερβαίνει το 15.

Ο αριθμός που λόγω μορφοποίησης (οπτικής στρογγυλοποίησης) του πεδίου εμφανίζεται ως 1,4 θα μπορούσε να είναι 1,399566255... που είναι και ο αριθμός που χρησιμοποιείται στους όποιους υπολογισμούς της εφαρμογής.
Μπορείς να τροποποιήσεις τη μορφοποίηση των πεδίων που περιέχουν δεκαδικούς αριθμούς ώστε να βλέπεις τα ακριβή αποτελέσματα.

Αν συμβαίνει κάτι άλλο ανέβασε μας ένα παράδειγμα για να το δούμε μαζί.

Με εκτίμηση

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #5  
Παλιά 11-11-20, 12:33
Όνομα: Κώστας
Έκδοση λογισμικού Office: Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 14-09-2010
Μηνύματα: 13
Προεπιλογή

το λάθος προκύπτει μόνο στον υπολογισμό.
Οι τιμές περάστηκαν με το χέρι και προφανώς δεν πάτησα πάνω από 1 δεκαδικό.
Επισυνάπτω 3 screenshot
ο πίνακας (ολοκαίνουριος) με 2 πεδία single με 2 decimal places
το query με τον πολλαπλασιασμό
Το αποτέλεσμα του query με τις τιμές των πεδίων
Θεωρώ γελοίο να πρέπει να βάζω round σε κάθε πολλαπλασιασμό που κάνω στη βάση αφού δεν θέλω ακρίβεια πάνω από 2 δεκαδικά
το να μου φέρνει τιμή με 15 μηδενικά μετά το κόμμα λόγω του τύπου του πεδίου να το καταλάβω και να κάνω format, το να μου φέρνει όμως στο τέλος αριθμούς που δεν υφίστανται στον υπολογισμό δεν το καταλαβαίνω.
Συνημμένα Thumbnails
Λάθος υπολογισμός σε ερώτημα-table.png   Λάθος υπολογισμός σε ερώτημα-query.png   Λάθος υπολογισμός σε ερώτημα-queryresults.png  
Απάντηση με παράθεση
  #6  
Παλιά 11-11-20, 13:05
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Αν έχουμε ένα δεκαδικό με λίγα δεκαδικά, δεν συνεπάγεται ότι θα αποθηκευτεί στον υπολογιστή με απόλυτη ακρίβεια.

Ο αριθμός 0,1 για την ακριβή αποθήκευσή του, απαιτεί άπειρα ψηφία (0, 1) του δυαδικού συστήματος.

Συνεπώς αν για την αποθήκευσή του χρησιμοποιήσω 64 θα αποθηκευτεί κατά προσέγγιση.

Λεπτομέρειες για τα παραπάνω στο σύνδεσμο:https://courses.chemeng.ntua.gr/file...-errors_v1.pdf

Στο προηγούμενο μήνυμα έβαλα λάθος σύνδεσμο.
Απάντηση με παράθεση
  #7  
Παλιά 11-11-20, 15:16
Όνομα: Κώστας
Έκδοση λογισμικού Office: Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 14-09-2010
Μηνύματα: 13
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από kapetang Εμφάνιση μηνυμάτων
Αν έχουμε ένα δεκαδικό με λίγα δεκαδικά, δεν συνεπάγεται ότι θα αποθηκευτεί στον υπολογιστή με απόλυτη ακρίβεια.

Ο αριθμός 0,1 για την ακριβή αποθήκευσή του, απαιτεί άπειρα ψηφία (0, 1) του δυαδικού συστήματος.

Συνεπώς αν για την αποθήκευσή του χρησιμοποιήσω 64 θα αποθηκευτεί κατά προσέγγιση.

Λεπτομέρειες για τα παραπάνω στο σύνδεσμο:https://courses.chemeng.ntua.gr/file...-errors_v1.pdf

Στο προηγούμενο μήνυμα έβαλα λάθος σύνδεσμο.
Κατάλαβα τι εννοείς. διάβασα το κείμενο. Έκανα τα πεδία double και φαίνεται να λειτουργεί σωστά. Ή τουλάχιστον στο βάθος των υπολογισμών που θέλω να βγάζει σωστά.
Απάντηση με παράθεση
  #8  
Παλιά 11-11-20, 18:13
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Κώστα, αφού έλυσες το πρόβλημα όλα καλά.

Εγώ, για σιγουριά, θα πρόσθετα στο πίνακα ένα πεδίο υπολογιζόμενο (αξία = Round(τιμή*ποσότητα;2) που υπολογίζεται μία μόνο φορά όταν καταχωρούμε τιμές στον πίνακα) και θα το χρησιμοποιούσα σε ερωτήματα φόρμες και άλλα αντικείμενα της Access.
Απάντηση με παράθεση
  #9  
Παλιά 12-11-20, 14:12
Όνομα: Κώστας
Έκδοση λογισμικού Office: Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 14-09-2010
Μηνύματα: 13
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από kapetang Εμφάνιση μηνυμάτων
Κώστα, αφού έλυσες το πρόβλημα όλα καλά.

Εγώ, για σιγουριά, θα πρόσθετα στο πίνακα ένα πεδίο υπολογιζόμενο (αξία = Round(τιμή*ποσότητα;2) που υπολογίζεται μία μόνο φορά όταν καταχωρούμε τιμές στον πίνακα) και θα το χρησιμοποιούσα σε ερωτήματα φόρμες και άλλα αντικείμενα της Access.
Δεν βε βολεύει γιατί θέλω ο υπολογισμός να γίνεται σε διάφορες περιπτώσεις (όχι μονο στο παράδειγμα με τιμές και πιθανώς η τιμή να έχει αλλάξει. Δεν είναι δηλαδή μόνο την ώρα της καταχώρησης στον πίνακα.
Ευχαριστώ πάντως.
Απάντηση με παράθεση
  #10  
Παλιά 12-11-20, 16:02
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Κώστα σημειώνω ότι, αν κάνουμε κάποιος λάθος στην τιμή ή την ποσότητα, μπορούμε να το διορθώσουμε στον πίνακα οπότε θα επαναϋπολογιστεί το υπολογιζόμενο πεδίο και η αλλαγή θα εφαρμοστεί και στα αντικείμενα που το χρησιμοποιούν.

Φυσικά εσύ ξέρεις καλύτερα τις ανάγκες σου και εσύ θα επιλέξεις πως θα τις καλύψεις.

Να είσαι καλά και καλή συνέχεια.
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[ Ερωτήματα ] Τι κάνω λάθος anestaki Access - Ερωτήσεις / Απαντήσεις 18 25-04-15 19:50
[ Πίνακες ] Υπολογισμός σε ερώτημα με βάση ημερομηνίες πο parara Access - Ερωτήσεις / Απαντήσεις 4 13-02-14 11:04
[ Ερωτήματα ] Υπολογισμός πεδίου σε ερώτημα artchrist73 Access - Ερωτήσεις / Απαντήσεις 5 14-12-13 22:00
Υπολογισμός σε ερώτημα stavross Access - Ερωτήσεις / Απαντήσεις 7 14-11-12 10:46
Λάθος σε κώδικα ΤΖΙΜΗΣ Access - Ερωτήσεις / Απαντήσεις 2 17-10-11 11:34


Η ώρα είναι 13:27.