Διαφορά μεταξύ η math.floor () και Math.Truncate ()

ψήφοι
363

Ποια είναι η διαφορά μεταξύ Math.Floor()και Math.Truncate()στο .NET;

Δημοσιεύθηκε 01/08/2008 στις 01:59
πηγή χρήστη
Σε άλλες γλώσσες...                            


10 απαντήσεις

ψήφοι
429

Math.Floorγύρους κάτω, Math.Ceilingγύρους μέχρι και Math.Truncateκύκλους προς το μηδέν. Έτσι, Math.Truncateείναι σαν Math.Floorγια θετικούς αριθμούς, όπως και Math.Ceilingγια τους αρνητικούς αριθμούς. Εδώ είναι η αναφορά .

Για λόγους πληρότητας, Math.Roundστρογγυλοποιεί στον πλησιέστερο ακέραιο. Εάν ο αριθμός είναι ακριβώς στο μέσο μεταξύ δύο ακεραίων, τότε γύρους προς την έστω και ένα. Αναφορά.

Δείτε επίσης: απάντηση Pax Diablo του . Συνιστάται!

Απαντήθηκε 01/08/2008 στις 13:26
πηγή χρήστη

ψήφοι
349

Ακολουθήστε αυτές τις συνδέσεις για τις περιγραφές MSDN της:

  • Math.Floor, Η οποία στρογγυλοποιεί προς τα κάτω προς το αρνητικό άπειρο.
  • Math.Ceiling, Η οποία ολοκληρώνει επάνω προς θετικό άπειρο.
  • Math.Truncate, Η οποία στρογγυλοποιεί προς τα πάνω ή προς τα κάτω προς το μηδέν.
  • Math.Round, Η οποία στρογγυλοποιεί στον πλησιέστερο ακέραιο ή καθορισμένο αριθμό των δεκαδικών ψηφίων. Μπορείτε να καθορίσετε τη συμπεριφορά αν είναι ακριβώς ίση απόσταση ανάμεσα σε δύο δυνατότητες, όπως η στρογγυλοποίηση έτσι ώστε το τελικό ψηφίο είναι ακόμα ( « Round(2.5,MidpointRounding.ToEven)“να γίνει 2) ή έτσι ώστε να είναι πιο μακριά από το μηδέν (” Round(2.5,MidpointRounding.AwayFromZero)» όλο και 3).

Το παρακάτω διάγραμμα και ο πίνακας μπορεί να βοηθήσει:

-3        -2        -1         0         1         2         3
 +--|------+---------+----|----+--|------+----|----+-------|-+
    a                     b       c           d            e

                       a=-2.7  b=-0.5  c=0.3  d=1.5  e=2.8
                       ======  ======  =====  =====  =====
Floor                    -3      -1      0      1      2
Ceiling                  -2       0      1      2      3
Truncate                 -2       0      0      1      2
Round (ToEven)           -3       0      0      2      3
Round (AwayFromZero)     -3      -1      0      2      3

Σημειώστε ότι Roundείναι πολύ πιο ισχυρή από ό, τι φαίνεται, απλώς και μόνο επειδή μπορούν να ολοκληρώσουν σε ένα συγκεκριμένο αριθμό δεκαδικών ψηφίων. Όλοι οι άλλοι στρογγυλοποίηση στο μηδέν δεκαδικά ψηφία πάντα. Για παράδειγμα:

n = 3.145;
a = System.Math.Round (n, 2, MidpointRounding.ToEven);       // 3.14
b = System.Math.Round (n, 2, MidpointRounding.AwayFromZero); // 3.15

Με τις άλλες λειτουργίες, θα πρέπει να χρησιμοποιήσετε πολλαπλασιασμός / διαίρεση κόλπα για να επιτευχθεί το ίδιο αποτέλεσμα:

c = System.Math.Truncate (n * 100) / 100;                    // 3.14
d = System.Math.Ceiling (n * 100) / 100;                     // 3.15
Απαντήθηκε 24/02/2009 στις 03:39
πηγή χρήστη

ψήφοι
41

Math.Floor() γύρους προς αρνητικό άπειρο

Math.Truncate στρογγυλοποιεί προς τα πάνω ή προς τα κάτω προς το μηδέν.

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

Math.Floor(-3.4)     = -4
Math.Truncate(-3.4)  = -3

ενώ

Math.Floor(3.4)     = 3
Math.Truncate(3.4)  = 3
Απαντήθηκε 19/07/2011 στις 04:56
πηγή χρήστη

ψήφοι
37

Μερικά παραδείγματα:

Round(1.5) = 2
Round(2.5) = 2
Round(1.5, MidpointRounding.AwayFromZero) = 2
Round(2.5, MidpointRounding.AwayFromZero) = 3
Round(1.55, 1) = 1.6
Round(1.65, 1) = 1.6
Round(1.55, 1, MidpointRounding.AwayFromZero) = 1.6
Round(1.65, 1, MidpointRounding.AwayFromZero) = 1.7

Truncate(2.10) = 2
Truncate(2.00) = 2
Truncate(1.90) = 1
Truncate(1.80) = 1
Απαντήθηκε 05/08/2008 στις 12:01
πηγή χρήστη

ψήφοι
19

Είναι λειτουργικά ισοδύναμο με θετικούς αριθμούς. Η διαφορά είναι στο πώς χειρίζονται αρνητικούς αριθμούς.

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

Math.Floor(2.5) = 2
Math.Truncate(2.5) = 2

Math.Floor(-2.5) = -3
Math.Truncate(-2.5) = -2

MSDN συνδέσεις: - η math.floor Μέθοδος - Μέθοδος Math.Truncate

PS Προσοχή Math.Round μπορεί να μην είναι αυτό που περιμένετε.

Για να πάρετε το «πρότυπο» στρογγυλοποίηση χρήση αποτέλεσμα:

float myFloat = 4.5;
Console.WriteLine( Math.Round(myFloat) ); // writes 4
Console.WriteLine( Math.Round(myFloat, 0, MidpointRounding.AwayFromZero) ) //writes 5
Console.WriteLine( myFloat.ToString("F0") ); // writes 5
Απαντήθηκε 02/01/2015 στις 13:09
πηγή χρήστη

ψήφοι
18

Math.Floor()γύρους «προς το αρνητικό άπειρο» σε συμμόρφωση με το πρότυπο ΙΕΕΕ 754 παράγραφο 4.

Math.Truncate() γύρους «στον πλησιέστερο ακέραιο αριθμό προς το μηδέν.»

Απαντήθηκε 07/06/2012 στις 19:15
πηγή χρήστη

ψήφοι
12

math.floor()

Επιστρέφει το μεγαλύτερο ακέραιο μικρότερο ή ίσο με το συγκεκριμένο αριθμό.

MSDN system.math.floor

math.truncate()

Υπολογίζει το αναπόσπαστο μέρος ενός αριθμού.

MSDN system.math.truncate

Math.Floor(2.56) = 2
Math.Floor(3.22) = 3
Math.Floor(-2.56) = -3
Math.Floor(-3.26) = -4

Math.Truncate(2.56) = 2
Math.Truncate(2.00) = 2
Math.Truncate(1.20) = 1
Math.Truncate(-3.26) = -3
Math.Truncate(-3.96) = -3

Επιπλέον Math.Round ()

   Math.Round(1.6) = 2
   Math.Round(-8.56) = -9
   Math.Round(8.16) = 8
   Math.Round(8.50) = 8
   Math.Round(8.51) = 9
Απαντήθηκε 12/02/2016 στις 09:12
πηγή χρήστη

ψήφοι
11

Math.Floor(): Επιστρέφει το μεγαλύτερο ακέραιο μικρότερο ή ίσο με το συγκεκριμένο αριθμό κινητής υποδιαστολής διπλής ακρίβειας.

Math.Round(): Στρογγυλοποιεί έναν τιμή στον πλησιέστερο ακέραιο ή στον καθορισμένο αριθμό των κλασματικών ψηφίων.

Απαντήθηκε 19/09/2013 στις 12:44
πηγή χρήστη

ψήφοι
6

Math.floorsliiiide προς τα αριστερά ...
Math.ceilsliiiide προς τα δεξιά ...
Math.truncatecriiiiss crooooss (πλακάκια / ceil πάντα προς την κατεύθυνση 0)
Math.roundcha cha, το πραγματικό λεία ... (πηγαίνετε στο πλησιέστερο πλευρά)

Ας παμε στην δουλεια! (⌐ □ □ _)

Στα αριστερά ... Math.floor
Πάρτε πίσω τώρα y'all ... --
Δύο λυκίσκου αυτή τη φορά ...-=2

Όλοι χτυπήστε τα χέρια σας ✋✋

Πόσο χαμηλά μπορείτε να πάτε; Μπορείτε να πάτε κάτω από χαμηλό; Όλος ο τρόπος για να το floor;

if (this == "wrong")
    return "i don't wanna be right";

Math.truncate(x)είναι επίσης το ίδιο όπως int(x).
αφαιρώντας ένα θετικό ή αρνητικό κλάσμα, είστε πάντα με κατεύθυνση προς το 0.

Απαντήθηκε 11/02/2018 στις 15:03
πηγή χρήστη

ψήφοι
1

Mat.floor () θα ολοκληρώνεται πάντα προς τα κάτω, δηλαδή., Επιστρέφει ΜΙΚΡΟΤΕΡΗ ακέραιο. Ενώ γύρο () θα επιστρέψει στον πλησιέστερο ακέραιο

Απαντήθηκε 17/07/2018 στις 07:14
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more