453 votes

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

Quelle est la différence entre `` et `` dans .NET ?

514voto

Chris Jester-Young Points 102876

Math.Floor arrondit, Math.Ceiling tours, et Math.Truncate tours vers zéro. Ainsi, Math.Truncate , c'est comme Math.Floor pour les nombres positifs, et comme Math.Ceiling pour les nombres négatifs. Voici la référence.

Pour être complet, Math.Round arrondi à l'entier le plus proche. Si le nombre est exactement à mi-chemin entre deux entiers, alors il arrondit vers le même. De référence.

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

407voto

paxdiablo Points 341644

Suivez ces liens pour la MSDN descriptions de:

  • Math.Floor, ce qui arrondit vers l'infini négatif.
  • Math.Ceiling, ce qui arrondit vers l'infini positif.
  • Math.Truncate, qui arrondit vers le haut ou vers le bas vers zéro.
  • Math.Round, qui arrondit à l'entier le plus proche ou le nombre de décimales spécifié. Vous pouvez spécifier le comportement si c'est exactement à égale distance entre les deux possibilités, telles que l'arrondi de sorte que le dernier chiffre est le même ("Round(2.5,MidpointRounding.ToEven)" devenir 2) ou qu'il soit le plus loin possible à partir de zéro ("Round(2.5,MidpointRounding.AwayFromZero)" devenir 3).

Le diagramme suivant et le tableau peut 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 Round est beaucoup plus puissant que ce qu'il semble, tout simplement parce qu'il peut arrondir à un nombre de décimales. Tous les autres tour à 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 multiplier/diviser la ruse pour obtenir le même effet:

c = System.Math.Truncate (n * 100) / 100;                    // 3.14
d = System.Math.Ceiling (n * 100) / 100;                     // 3.15

68voto

Azhar Points 6800

Arrondit le tout en nombre arrondit vers zéro

par exemple

47voto

Marek Grzenkowicz Points 9652

Quelques exemples :

25voto

edmastermind29 Points 1417

``tours « vers l’infini négatif » en conformité avec le Standard IEEE 754 section 4.

``tours « à l’entier le plus proche vers zéro ».

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X