Εμφάνιση ενός μόνο μηνύματος
  #10  
Παλιά 19-02-22, 09:38
dimmag Ο χρήστης dimmag δεν είναι συνδεδεμένος
Όνομα: Δημήτρης
Έκδοση λογισμικού 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.
Ευχαριστώ
Απάντηση με παράθεση