Unterschied zwischen Math.Floor () und Math.Truncate ()

stimmen
363

Was ist der Unterschied zwischen Math.Floor()und Math.Truncate()in .NET?

Veröffentlicht am 01/08/2008 um 01:59
quelle vom benutzer
In anderen Sprachen...                            


10 antworten

stimmen
429

Math.Floorabrundet, Math.Ceilingrundet, und Math.TruncateRunden gegen Null. Somit Math.Truncateist wie Math.Floorfür positive Zahlen, und wie Math.Ceilingfür negative Zahlen. Hier ist die Referenz .

Für Vollständigkeit, Math.Roundrundet auf die nächste ganze Zahl. Wenn die Zahl genau zwischen zwei ganzen Zahlen auf halben Weg ist, dann rundet es auf die selbst ein. Referenz.

Siehe auch: Pax Diablo Antwort . Sehr empfehlenswert!

Beantwortet am 01/08/2008 um 13:26
quelle vom benutzer

stimmen
349

Führen Sie die folgenden Links für die MSDN-Beschreibungen:

  • Math.Floor, Die nach unten in Richtung rundet negative Unendlichkeit.
  • Math.Ceiling, Die in Richtung positiv unendlich aufrundet.
  • Math.Truncate, Die gegen Null rundet oben oder unten.
  • Math.Round, Die das Angebot auf die nächste ganze Zahl oder eine angegebene Anzahl von Dezimalstellen. Sie können das Verhalten angeben , wenn es zwischen zwei Möglichkeiten, wie Rundung genau gleich weit entfernt ist , so dass die letzte Ziffer ist auch ( „ Round(2.5,MidpointRounding.ToEven)‚Wird 2) oder so , dass es von Null weiter entfernt ist (‘ Round(2.5,MidpointRounding.AwayFromZero)“ immer 3).

Das folgende Diagramm und Tabelle kann helfen:

-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

Beachten Sie, dass Roundviel stärker ist , als es scheint, einfach weil es auf eine bestimmte Anzahl von Dezimalstellen abzurunden können. Alle anderen runden Null Dezimalstellen immer. Beispielsweise:

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

Bei den anderen Funktionen, müssen Sie Multiplikations / Divisions-Tricks verwenden, um die gleiche Wirkung zu erzielen:

c = System.Math.Truncate (n * 100) / 100;                    // 3.14
d = System.Math.Ceiling (n * 100) / 100;                     // 3.15
Beantwortet am 24/02/2009 um 03:39
quelle vom benutzer

stimmen
41

Math.Floor() Runden in Richtung negativer Unendlichkeit

Math.Truncate rundet oben oder nach unten in Richtung Null.

Beispielsweise:

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

während

Math.Floor(3.4)     = 3
Math.Truncate(3.4)  = 3
Beantwortet am 19/07/2011 um 04:56
quelle vom benutzer

stimmen
37

Einige Beispiele:

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
Beantwortet am 05/08/2008 um 12:01
quelle vom benutzer

stimmen
19

Sie sind funktionell gleichwertig mit positiven Zahlen. Der Unterschied liegt darin, wie sie negative Zahlen verarbeiten.

Beispielsweise:

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

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

MSDN Links: - Math.Floor Methode - Math.Truncate Methode

PS Vorsicht vor Math.Round kann es nicht sein, was Sie erwarten.

die „Standard“ Rundungser Verwendung zu erhalten:

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
Beantwortet am 02/01/2015 um 13:09
quelle vom benutzer

stimmen
18

Math.Floor()Runden „ in Richtung minus unendlich“ in Übereinstimmung zu dem IEEE - Standard 754 Abschnitt 4.

Math.Truncate() Runden „auf die nächste ganze Zahl auf Null.“

Beantwortet am 07/06/2012 um 19:15
quelle vom benutzer

stimmen
12

math.floor()

Gibt die größte ganze Zahl kleiner oder gleich der angegebenen Zahl.

MSDN system.math.floor

math.truncate()

Berechnet den integralen Teil einer Zahl.

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

Zusätzlich 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
Beantwortet am 12/02/2016 um 09:12
quelle vom benutzer

stimmen
11

Math.Floor(): Liefert die größte ganze Zahl kleiner als oder gleich die Gleitkommazahl mit doppelter Genauigkeit spezifiziert.

Math.Round(): Runden auf die nächste ganze Zahl oder auf die angegebene Anzahl der Nachkommastellen Wert.

Beantwortet am 19/09/2013 um 12:44
quelle vom benutzer

stimmen
6

Math.floorsliiiide nach links ...
Math.ceilsliiiide nach rechts ...
Math.truncatecriiiiss crooooss (Boden / ceil immer auf 0)
Math.roundcha cha, real glatt ... (weiter zur nächsten Seite)

Gehen wir an die Arbeit! (⌐ □ □ _)

Auf der linken Seite ... Math.floor
Nehmen Sie es jetzt y'all zurück ... --
Zwei Hopfen diesmal ...-=2

Jeder Hände klatschen ✋✋

Wie tief kann man gehen? Können Sie gehen tief unten? Den ganzen Weg zu den floor?

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

Math.truncate(x)ist auch die gleiche wie int(x).
durch eine positive oder negative Fraktion zu entfernen, Sie unterwegs sind immer auf 0.

Beantwortet am 11/02/2018 um 15:03
quelle vom benutzer

stimmen
1

Mat.floor () rundet immer nach unten, dh., Es gibt WENIG integer. Während round () wird die nächste Ganzzahl zurückkehren

Beantwortet am 17/07/2018 um 07:14
quelle vom benutzer

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