Παράθεση:
Αρχική Δημοσίευση από 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
Ευχαριστώ και Χρόνια πολλά
Δημήτρης