Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 1|Απάντηση: 0

[Συμβουλές] Το .NET/C# χρησιμοποιεί το MidpointRounding του Math.Round για στρογγυλοποίηση

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις46 δευτερόλεπτα πριν | | | |
απαιτήσεις: Συχνά χρησιμοποιείται για στρογγυλοποίηση και δεν είναι πολύ ευαίσθητο στις απαιτήσεις ακρίβειας.

Για να επιτευχθεί στρογγυλοποίηση δύο δεκαδικών ψηφίων, ο προγραμματιστής έγραψε τον ακόλουθο κώδικα:
Ο κώδικας είναι πολύ απλός, προγραμματιστέςΤο πραγματικό αποτέλεσμα ήταν 12,12, το οποίο έρχεται σε αντίθεση με το αναμενόμενο αποτέλεσμα στρογγυλοποίησης 12,13

Ο λόγος για αυτό το αποτέλεσμα είναι ότι το Math.Round δεν χρησιμοποιεί τον κανόνα στρογγυλοποίησης από προεπιλογή, αλλά μάλλον στρογγυλοποιεί για να κάνει ζυγά.

Στρογγυλοποιήστε έως και πέντε για να δημιουργήσετε ένα ζευγάρι

Η λεγόμενη στρογγυλοποίηση από έξι έως πέντε για να δημιουργηθεί ένα ζεύγος σημαίνει ότι μετά τον προσδιορισμό των σημαντικών ψηφίων, εάν το επόμενο σημαντικό ψηφίο είναι μικρότερο ή ίσο με 4, στρογγυλοποιείται προς τα κάτω. Όταν το επόμενο σημαντικό ψηφίο είναι 5,

  • Εάν ο αριθμός πριν από το 5 είναι μονός, στρογγυλοποιήστε πέντε και προχωρήστε κατά ένα
  • Εάν το 5 είναι πριν από έναν ζυγό αριθμό, παραλείψτε το 5 (το 0 είναι ζυγός).

Στατιστικά, η στρογγυλοποίηση στο ζυγό είναι πιο ακριβής από τη στρογγυλοποίηση πέντε, γιατί όταν υπάρχουν πολλοί υπολογισμοί, η στρογγυλοποίηση κάθε πέντε προς ένα μπορεί να οδηγήσει σε μεγαλύτερο αριθμό.

Για παράδειγμα:

1,15+1,25+1,35+1,45 = 5,2

Εάν τα σημαντικά ψηφία είναι ένα δεκαδικό ψηφίο, το αποτέλεσμα προκύπτει χρησιμοποιώντας την αρχή της στρογγυλοποίησης

1,2 + 1,3 + 1,4 + 1,5 = 5,4

Το αποτέλεσμα που προκύπτει με στρογγυλοποίηση σε πέντε ζυγούς είναι

1,2 + 1,2 + 1,4 + 1,4 = 5,2

Αυτό δείχνει ότι ο κανόνας στρογγυλοποίησης αποδίδει πιο ακριβή αποτελέσματα.

Μαθηματικά.Γύρος

Πώς λοιπόν χρησιμοποιείτε το Math.Round για να επιτύχετε την αναμενόμενη στρογγυλοποίηση;

Στην πραγματικότητα, το Math.Round σε C# παρέχει πολλές μεθόδους υπερφόρτωσης, συμπεριλαμβανομένων δύο μεθόδων:
Και οι δύο μέθοδοι παρέχουν μια τρίτη παράμετρο που ονομάζεται mode, η οποία είναι μια μεταβλητή απαρίθμησης του MidpointRounding με δύο επιλέξιμες τιμές

  • AwayFromZero - στρογγυλοποίηση προς τα πάνω
  • Προς την Ομοιόμορφη - στρογγυλοποίηση σε ομοιόμορφη στρογγυλοποίηση

Αν λοιπόν θέλουμε ένα ιδανικό στρογγυλεμένο αποτέλεσμα, μπορούμε να χρησιμοποιήσουμε τον παρακάτω κώδικα:
Απαρίθμηση στρογγυλοποίησης Midpoint, όπως φαίνεται παρακάτω:



Αναφορά:Η σύνδεση με υπερσύνδεσμο είναι ορατή.




Προηγούμενος:Βελτιστοποίηση WITH (NOLOCK) για ερωτήματα EF Core υψηλής ταυτόχρονης χρήσης
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com