Εμφάνιση ενός μόνο μηνύματος
  #18  
Παλιά 13-08-17, 09:27
dimmag Ο χρήστης dimmag δεν είναι συνδεδεμένος
Όνομα: Δημήτρης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 21-07-2010
Μηνύματα: 99
Προεπιλογή

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

Για παράδειγμα: round(13,344999999999;2) = 13,34.

Ενώ round(13,344999999999 + 0,000000001;2)=13,35
Καλημέρα
Μια λύση σε αυτό το πρόβλημα είναι:
πολ/ζω με 1000 για στρογγυλοποίηση 2 δεκαδικών
13,344999999999*1000=13344,999999999
τον κάνω ακέραιο
int(13,344999999999*1000)=13344
διαιρώ με 1000
int(13,344999999999*1000)/1000=13,344
και στρογγυλοποιώ προσθέτοντας μια μικρή ποσότητα πχ 0,000000001
round((int(13,344999999999*1000)/1000)+0,000000001)=13,34

Δηλαδή round((Int(([ΤΙΜΗ]*[ΦΠΑ])*1000))/1000+0,000000001;2)

Επειδή (είχα ένα πρόβλημα παλιά με μέσους όρους) εγώ ξανακάνω την ίδια διαδικασία για δύο δεκαδικά πολ/ζοντας με 100 /ακέραιος/διαίρεση με 100 (το στρογγυλοποιημένο ποσό τώρα)

Δηλαδή int(round((Int(([ΤΙΜΗ]*[ΦΠΑ])*1000))/1000+0,000000001;2)*100)/100

Ευχαριστώ και Χρόνια πολλά
Δημήτρης
Απάντηση με παράθεση