
19-02-22, 09:38
|
Όνομα: Δημήτρης Έκδοση λογισμικού Office: Ms-Office 2003 Γλώσσα λογισμικού Office: Ελληνική | | Εγγραφή: 21-07-2010
Μηνύματα: 98
| |
Παράθεση:
Αρχική Δημοσίευση από kapetang Καλησπέρα Δημήτρη
Συγκρίνοντας το γενικό τύπο με τον τύπο για 2 δεκαδικά νομίζω ότι στο γενικό πρέπει να προστεθούν κάποιες παρενθέσεις.
Συγκεκριμένα πιστεύω ότι πρέπει να γίνει:
Round_ok (x,2)=Round(Int(x * (10 ^ (n + 1))) / (10 ^ (n + 1)) + 1 / (10 ^ (n + 2)), n)
Παρακάτω βλέπουμε μια δοκιμή στο παράθυρο Immediate της VBA
x=402.4250000
n=2
?Round(Int(x * (10 ^ (n + 1))) / (10 ^ (n + 1)) + 1 / (10 ^ (n + 2)), n)
402,43 <---------------------σωστό
?round(x,2)
402,42 <---------------------λάθος | Σωστό για τις παρενθέσεις το έγραψα βιαστικά
η φιλοσοφία είναι να αφήνω 1 παραπάνω δεκαδικό από όσα θέλω να στρογγυλοποιήσω και να προσθέτω μικροποσότητα και αν το προχωρήσουμε την χρειάζεται μόνο όταν το επόμενο ψηφίο του ψηφίου στρογγυλοποίησης είναι 5 και έπονται μηδενικά δηλ αν
Int(x * (10 ^ (n + 1))) Mod 10 = 5 and (x -Int(x * (10 ^ (n + 1))) / (10 ^ (n + 1))) =0
γιατί τότε αν δεν κάνω λάθος δεν δουλεύει σωστά η round στην access
Γενικά η Int(x * (10 ^ (n + 1))) / (10 ^ (n + 1)) είναι χρήσιμη να περιορίζουμε τα δεκαδικά ψηφία σίγουρα σε n.
Ευχαριστώ
|