Forskjellen mellom Math.Floor () og Math.Truncate ()

stemmer
373

Hva er forskjellen mellom Math.Floor()og Math.Truncate()i .NET?

Publisert på 01/08/2008 klokken 00:59
kilden bruker
På andre språk...                            


10 svar

stemmer
438

Math.Floorrunder ned, Math.Ceilingrunder opp, og Math.Truncaterunder mot null. Således Math.Truncateer som Math.Floorfor positive tall, og som Math.Ceilingfor negative tall. Her er referansen .

For fullstendighet, Math.Roundrunder til nærmeste heltall. Hvis nummeret er nøyaktig midt mellom to heltall, så runder det mot enda en. Henvisning.

Se også: Pax Diablo svar . Sterkt anbefalt!

Svarte 01/08/2008 kl. 12:26
kilden bruker

stemmer
355

Følg disse linkene for MSDN beskrivelser av:

  • Math.Floor, Som runder ned mot negativ uendelig.
  • Math.Ceiling, Som runder opp mot positiv uendelig.
  • Math.Truncate, Som runder opp eller ned mot null.
  • Math.Round, Som runder til nærmeste heltall eller angitt antall desimaler. Du kan spesifisere atferden hvis den er akkurat like langt mellom to muligheter, for eksempel avrunding slik at det endelige tallet er enda ( " Round(2.5,MidpointRounding.ToEven)'blir to), eller at den er lenger bort fra null (' Round(2.5,MidpointRounding.AwayFromZero)" blir 3).

Følgende diagram og tabellen kan hjelpe:

-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 at Rounder mye kraftigere enn det ser ut, rett og slett fordi det kan runde til et bestemt antall desimaler. Alle de andre runde av til null desimaler alltid. For eksempel:

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

Med de andre funksjonene, må du bruke multiplisere / dividere lureri for å oppnå samme effekt:

c = System.Math.Truncate (n * 100) / 100;                    // 3.14
d = System.Math.Ceiling (n * 100) / 100;                     // 3.15
Svarte 24/02/2009 kl. 02:39
kilden bruker

stemmer
46

Math.Floor() runder mot negativ uendelighet

Math.Truncate runder opp eller ned mot null.

For eksempel:

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

samtidig som

Math.Floor(3.4)     = 3
Math.Truncate(3.4)  = 3
Svarte 19/07/2011 kl. 03:56
kilden bruker

stemmer
39

Noen eksempler:

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
Svarte 05/08/2008 kl. 11:01
kilden bruker

stemmer
21

De er funksjonelt likeverdig med positive tall. Forskjellen ligger i hvordan de håndterer negative tall.

For eksempel:

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

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

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

PS Pass deg for Math.Round det kanskje ikke hva du forventer.

For å få "standard" avrunding resultat bruk:

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
Svarte 02/01/2015 kl. 13:09
kilden bruker

stemmer
19

Math.Floor()runder "mot negativ uendelig" i henhold til IEEE Standard 754 Del 4.

Math.Truncate() runder "til det nærmeste hele tall mot null."

Svarte 07/06/2012 kl. 18:15
kilden bruker

stemmer
14

math.floor()

Returnerer den største heltall mindre enn eller lik den spesifiserte tall.

MSDN system.math.floor

math.truncate()

Beregner integrert del av et 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

I tillegg 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
Svarte 12/02/2016 kl. 09:12
kilden bruker

stemmer
12

Math.Floor(): Returnerer den største heltall mindre enn eller lik den spesifiserte dobbel presisjon flyttall.

Math.Round(): Rounds en verdi til det nærmeste heltall eller til det angitte antall desimaler.

Svarte 19/09/2013 kl. 11:44
kilden bruker

stemmer
8

Math.floorsliiiide til venstre ...
Math.ceilsliiiide til høyre ...
Math.truncatecriiiiss crooooss (gulv / himling alltid mot 0)
Math.roundcha cha, real glatt ... (gå til nærmeste side)

La oss gå på jobb! (⌐ □ _ □)

Til venstre ... Math.floor
Ta det tilbake nå y'all ... --
To hopp denne gangen ...-=2

Alle klappe i hendene ✋✋

Hvor lavt kan du synke? Kan du gå ned lav? Hele veien til floor?

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

Math.truncate(x)er også den samme som int(x).
ved å fjerne en positiv eller negativ brøkdel, er du alltid på vei mot 0.

Svarte 11/02/2018 kl. 15:03
kilden bruker

stemmer
1

Mat.floor () vil alltid runde ned ie., Går den LAVESTE heltall. Mens round () returnerer den nærmeste heltall

Svarte 17/07/2018 kl. 07:14
kilden bruker

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