Εμφάνιση ενός μόνο μηνύματος
  #4  
Παλιά 17-02-22, 12:42
tsgiannis Ο χρήστης tsgiannis δεν είναι συνδεδεμένος
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 08-12-2020
Μηνύματα: 153
Προεπιλογή

Να πω την αλήθεια καποιες φορές μου έτυχαν κάποια "λαθάκια" αυτού του τύπου αλλά δεν είχε τύχει ποτέ να ασχοληθώ καθώς δεν με ενοχλούσαν
Το κοίταξα όμως και εδώ έχει 2 λύσεις : https://www.techonthenet.com/access/...eric/round.php
Μου άρεσε η "πονηρή" λύση του τύπου
Κώδικας:
Round(YourNumber+0,000001;1)
Μπορεί να είναι τρελλά μπακάλικη αλλά δουλεύει γιατί προσπερνάει το πιο πάνω πρόβλημα με την "ορθή" αποθήκευση δεκαδικών αριθμών.... (και μην νομίζεις ότι κάτι ανάλογο δεν θα χρησιμοποείται ακόμα και απο πιο "High End" λύσεις)
EDIT: το πρόβλημα με την λανθασμένη στρογγυλοποίηση λέγεται Banker Rounding ...: https://stackoverflow.com/questions/...2-instead-of-3
Δες πως επηρεάζεται η ακρίβεια :
Κώδικας:
?round(12.650000000000001 ,1)   '12 Μηδενικά
 12,6 
?round(12.65000000000001 ,1) '11 Μηδενικά
 12,7
EDIT2 : Βρήκα πως λέγεται αυτό το "πρόβλημα" :Αριθμοί Κινητής Υποδιαστολής https://www.cs.uoi.gr/~tsiatouhas/PLY307-CA/AppxB.pdf
και δες πως πραγματικά αποθηκεύεται ο αριθμός σου: (και η διαφορά Double - Single)
https://www.exploringbinary.com/floa...int-converter/
Κώδικας:
12.650000000000001 --> (Double) : 12.6500000000000003552713678800500929355621337890625
12.650000000000001 --> (Single) : 12.6499996185302734375
και όμοια :
Κώδικας:
402.4249346 --> (Double) -->402.42493459999997185150277800858020782470703125
402.4249346 --> (Single) -->402.4249267578125
Οπότε λίγο πολύ τα αποτελέσματα απο την πλευρά της Access και γενικώς οποιοδήποτε Υπολογιστή είναι σωστά
Απάντηση με παράθεση