kalexan Δημοσ. 6 Οκτωβρίου 2008 Δημοσ. 6 Οκτωβρίου 2008 Δεν ξέρω εάν έχει τύχει σε κανέναν αλλά κοιτάξτε το αποτέλεσμα του παρακάτω κώδικα. $amount = 9.95; echo $amount. " ,type: " . gettype($amount) . "\n"; //τυπώνει 9.95 ,type: double $amount = $amount * 100; echo $amount. " ,type: " . gettype($amount) . "\n"; //τυπώνει 995 ,type: double $amount = (int)$amount; // or try: $amount = intval($amount); echo $amount. " ,type: " . gettype($amount) . "\n"; //τυπώνει 994 ,type: integer!!!!!!! Όπως αναφέρεται και στο online documentation της PHP, αυτό συμβαίνει σε κλάσματα (ή αποτελέσματα πράξεων) που παράγουν αριθμούς με άπειρα δεκαδικά ψηφία (o αριθμός ως float χάνει την ακρίβειά του). Προφανώς, όμως, η τιμή 9.95 έχει πεπερασμένα. Το παραπάνω συμβαίνει και σε άλλους αριθμούς. Δεν είναι να τραβάς τα μαλιά σου?!?!?!?
alkisg Δημοσ. 6 Οκτωβρίου 2008 Δημοσ. 6 Οκτωβρίου 2008 Όχι δεκαδικά στο δεκαδικό σύστημα. Δεκαδικά ψηφία στο δυαδικό σύστημα. Π.χ. το 9,95 μπορεί να είναι 9,9499999999999999999, οπότε με τις πράξεις και τη στρογγυλοποίηση να βγαίνει 994. Δεν είναι θέμα της php, έτσι δουλεύουν όλοι οι επεξεργαστές. Δες το θέμα για floating point numbers στη wikipedia για να καταλάβεις το format τους.
Evgenios1 Δημοσ. 7 Οκτωβρίου 2008 Δημοσ. 7 Οκτωβρίου 2008 Όχι δεκαδικά στο δεκαδικό σύστημα.Δεκαδικά ψηφία στο δυαδικό σύστημα. Π.χ. το 9,95 μπορεί να είναι 9,9499999999999999999, οπότε με τις πράξεις και τη στρογγυλοποίηση να βγαίνει 994. Δεν είναι θέμα της php, έτσι δουλεύουν όλοι οι επεξεργαστές. Δες το θέμα για floating point numbers στη wikipedia για να καταλάβεις το format τους. Lol (αναφερομε στη ΓΛΩΣΣΑ) Κειτα αλαγες που καναν στον επεξεργαστη κειμενου.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.