Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα σας! Έχω το παρακάτω scriptακι σε Matlab : 

 

n = [1,2,5,1000];
H = zeros(4,1);
for j=1:4
    for i=1:n(j)
       H(j,1) = H(j,1) + (1/i) ; 
    end
    display ( H(j,1));
    H(j,1) = round( H(j,1),4,'significant' );
end
display ( H ) ;

Τα αποτελέσματα που βγάζει είναι τα παρακάτω:
 

 1
 
    1.5000
 
    2.2833
 
    7.4855
 
 
H =
 
    1.0000
    1.5000
    2.2830
    7.4850

Τα 3 πρώτα τα στρογγυλοποιεί μια χαρά. Το θέμα μου είναι ότι το 7.4855 ενώ έπρεπε να το στρογγυλοποίησει σε 7.486 το στρογγυλοποιεί σε 7.485. 

Το περίεργο είναι ότι άμα τρέξω μόνο την εντολή round( 7.4850,4,'significant' ) στην κονσόλα , βγάζει το σωστό αποτέλεσμα 7.486 !!!

Τι ακριβώς γίνεται? 

Σας ευχαριστώ! 
Δημοσ.

Πριν τη στρογγυλοποίηση ο τέταρτος αριθμός με ακριβεία πέντε δεκαδικών ψηφίων είναι 7.48547. Στην έξοδο σου βγαίνει ήδη στρογγυλοποιημένος στον τέταρτο δεκαδικό δηλαδή 7.4855. Στη συνέχεια στρογγυλοποιείται στο τέταρτο ψηφίο (στο τρίτο δεκαδικό) δηλαδή στο 5 και αφού ο διπλανός του είναι το 4 (και όχι το 5 όπως φαίνεται στην έξοδο) προκύπτει το 7.4850.

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...