Différence entre Math.Floor () et Math.Truncate ()

voix
363

Quelle est la différence entre Math.Floor()et Math.Truncate()dans .NET?

Créé 01/08/2008 à 01:59
source utilisateur
Dans d'autres langues...                            


10 réponses

voix
429

Math.Floorarrondit, Math.Ceilingarrondit et Math.Truncatetours vers zéro. Ainsi, Math.Truncateest comme Math.Floorpour les nombres positifs, et comme Math.Ceilingpour les nombres négatifs. Voici la référence .

Pour être complet, Math.Roundarrondit entier le plus proche. Si le nombre est à mi - chemin exactement entre deux entiers, il arrondit vers le même un. Référence.

Voir aussi: La réponse de Pax Diablo . Hautement recommandé!

Créé 01/08/2008 à 13:26
source utilisateur

voix
349

Suivez ces liens pour les descriptions MSDN de:

  • Math.Floor, Qui arrondit vers l'infini négatif.
  • Math.Ceiling, Qui arrondit vers l'infini positif.
  • Math.Truncate, Qui arrondit vers le haut ou vers le bas vers zéro.
  • Math.Round, Qui arrondit au plus proche entier ou nombre spécifié de décimales. Vous pouvez spécifier le comportement si elle est exactement à égale distance entre deux possibilités, telles que l' arrondi de sorte que le dernier chiffre est pair ( « Round(2.5,MidpointRounding.ToEven)« devenir 2) ou pour qu'il soit plus loin de zéro ( » Round(2.5,MidpointRounding.AwayFromZero)» devenir 3).

Le diagramme et le tableau suivants peuvent vous aider:

-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

Notez que Roundest beaucoup plus puissant qu'il n'y paraît, tout simplement parce qu'il peut arrondir à un certain nombre de décimales. Tous les autres arrondi à zéro décimales toujours. Par exemple:

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

Avec les autres fonctions, vous devez utiliser la ruse se multiplient / diviser pour obtenir le même effet:

c = System.Math.Truncate (n * 100) / 100;                    // 3.14
d = System.Math.Ceiling (n * 100) / 100;                     // 3.15
Créé 24/02/2009 à 03:39
source utilisateur

voix
41

Math.Floor() tours vers l'infini

Math.Truncate arrondit vers le haut ou vers le bas vers zéro.

Par exemple:

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

tandis que

Math.Floor(3.4)     = 3
Math.Truncate(3.4)  = 3
Créé 19/07/2011 à 04:56
source utilisateur

voix
37

Quelques exemples:

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
Créé 05/08/2008 à 12:01
source utilisateur

voix
19

Ils sont fonctionnellement équivalents avec des chiffres positifs. La différence est dans la façon dont ils traitent les nombres négatifs.

Par exemple:

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

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

Liens MSDN: - Math.Floor Méthode - Math.Truncate Méthode

PS Méfiez-vous des Math.Round il peut ne pas être ce que vous attendez.

Pour obtenir l'utilisation de résultat arrondi « standard »:

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
Créé 02/01/2015 à 13:09
source utilisateur

voix
18

Math.Floor()tours « vers l' infini » conforme à la norme IEEE 754 section 4.

Math.Truncate() tours « à l'entier le plus proche vers zéro. »

Créé 07/06/2012 à 19:15
source utilisateur

voix
12

math.floor()

Retourne le plus grand entier inférieur ou égal au nombre spécifié.

MSDN system.math.floor

math.truncate()

Calcule la partie entière d'un nombre.

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

De plus 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
Créé 12/02/2016 à 09:12
source utilisateur

voix
11

Math.Floor(): Retourne le plus grand entier inférieur ou égal au double précision nombre à virgule flottante spécifiée.

Math.Round(): Rondes une valeur à l'entier le plus proche ou au nombre spécifié de chiffres après la virgule.

Créé 19/09/2013 à 12:44
source utilisateur

voix
6

Math.floorsliiiide à gauche ...
Math.ceilsliiiide à droite ...
Math.truncatecriiiiss crooooss (sol / Ceil toujours vers 0)
Math.roundcha cha, véritable lisse ... (aller à côté le plus proche)

Allons au travail! (⌐ □ _ □)

A gauche ... Math.floor
Ramenez - vous tous maintenant ... --
Deux sauts cette fois -ci ...-=2

Tout le monde Applaudissez ✋✋

Comment peut - on aller? Pouvez - vous descendre le plus bas? Tout le chemin à floor?

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

Math.truncate(x)est également le même que int(x).
en supprimant une fraction positive ou négative, vous êtes toujours en direction de 0.

Créé 11/02/2018 à 15:03
source utilisateur

voix
1

Mat.floor () toujours arrondir ie., Il retourne entier MOINDRE. Alors que round () retourne l'entier le plus proche

Créé 17/07/2018 à 07:14
source utilisateur

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