Verschil tussen Math.Floor () en Math.Truncate ()

stemmen
363

Wat is het verschil tussen Math.Floor()en Math.Truncate()in .NET?

De vraag is gesteld op 01/08/2008 om 01:59
bron van user
In andere talen...                            


10 antwoorden

stemmen
429

Math.Floorrondes neer, Math.Ceilingrondt, en Math.Truncaterondes naar nul. Zo Math.Truncateis als Math.Floorvoor positieve getallen, en net als Math.Ceilingvoor negatieve getallen. Hier is de referentie .

Volledigheidshalve Math.Roundis afgerond op het dichtstbijzijnde gehele getal. Als het nummer precies halverwege tussen twee gehele getallen, dan rondt richting het zelfs maar één. Referentie.

Zie ook: antwoord Pax Diablo's . Sterk aanbevolen!

antwoordde op 01/08/2008 om 13:26
bron van user

stemmen
37

Een paar voorbeelden:

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
antwoordde op 05/08/2008 om 12:01
bron van user

stemmen
349

Volg de onderstaande links voor de MSDN beschrijvingen van:

  • Math.FloorDie omlaag naar negatief oneindig rondes.
  • Math.Ceiling, Die rondt richting positief oneindig.
  • Math.TruncateDie rondt of omlaag naar nul.
  • Math.RoundDie is afgerond op het dichtstbijzijnde gehele getal of gespecificeerde aantal decimalen. U kunt de werking aangeven of het precies gelijke afstand tussen twee mogelijkheden, zoals afronding zodat het laatste cijfer zelfs ( " Round(2.5,MidpointRounding.ToEven)'steeds 2) of dat het verder van nul (' Round(2.5,MidpointRounding.AwayFromZero)" worden 3).

In het volgende diagram en de tabel kunnen helpen:

-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

Merk op dat Roundis een stuk krachtiger dan het lijkt, gewoon omdat het kan afronden op een specifiek aantal cijfers achter de komma. Alle anderen afronden op nul decimalen altijd. Bijvoorbeeld:

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

Met de andere functies, moet je vermenigvuldigen / delen bedrog gebruiken om hetzelfde effect te bereiken:

c = System.Math.Truncate (n * 100) / 100;                    // 3.14
d = System.Math.Ceiling (n * 100) / 100;                     // 3.15
antwoordde op 24/02/2009 om 03:39
bron van user

stemmen
41

Math.Floor() rondes in de richting van negatief oneindig

Math.Truncate rondt omhoog of omlaag naar nul.

Bijvoorbeeld:

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

terwijl

Math.Floor(3.4)     = 3
Math.Truncate(3.4)  = 3
antwoordde op 19/07/2011 om 04:56
bron van user

stemmen
18

Math.Floor()rondes "in de richting negatief oneindig" in overeenstemming met IEEE Standard 754 deel 4.

Math.Truncate() rondes "naar het dichtstbijzijnde gehele getal naar nul."

antwoordde op 07/06/2012 om 19:15
bron van user

stemmen
11

Math.Floor(): Geeft het grootste gehele getal kleiner dan of gelijk aan de opgegeven dubbele precisie drijvende komma getal.

Math.Round(): Rondt een waarde naar het dichtstbijzijnde gehele getal of het opgegeven aantal cijfers achter de komma.

antwoordde op 19/09/2013 om 12:44
bron van user

stemmen
19

Ze zijn functioneel equivalent met positieve cijfers. Het verschil zit in de manier waarop ze omgaan met negatieve getallen.

Bijvoorbeeld:

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

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

MSDN links: - Math.Floor Method - Math.Truncate Method

PS Pas Math.round zal het misschien niet wat je verwacht.

Om de "standaard" afronding resultaat gebruik te krijgen:

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
antwoordde op 02/01/2015 om 13:09
bron van user

stemmen
12

math.floor()

Geeft het grootste gehele getal kleiner dan of gelijk aan het opgegeven getal.

MSDN system.math.floor

math.truncate()

Berekent de integraal onderdeel van een nummer.

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

Bovendien 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
antwoordde op 12/02/2016 om 09:12
bron van user

stemmen
6

Math.floorsliiiide naar links ...
Math.ceilsliiiide naar rechts ...
Math.truncatecriiiiss crooooss (vloer / ceil altijd in de richting van 0)
Math.roundcha cha, echt glad ... (ga naar dichtstbijzijnde kant)

Laten we aan het werk gaan! (⌐ □ □ _)

Aan de linkerkant ... Math.floor
Neem het nu terug y'all ... --
Twee hop dit keer ...-=2

Iedereen in je handen klappen ✋✋

Hoe laag kan je gaan? Kun je naar beneden laag? Helemaal naar het floor?

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

Math.truncate(x)is gelijk int(x).
door het verwijderen van een positieve of negatieve fractie bent u altijd in de richting van 0.

antwoordde op 11/02/2018 om 15:03
bron van user

stemmen
1

Mat.floor () altijd beneden afronden dwz., Keert LESSER integer. Terwijl round () zal het dichtstbijzijnde gehele getal terug

antwoordde op 17/07/2018 om 07:14
bron van user

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