408 votes

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

<p>Quelle est la différence entre <a href="http://msdn.microsoft.com/en-us/library/9a6a2sxy.aspx"> <code></code> </a> et <a href="http://msdn.microsoft.com/en-us/library/system.math.truncate.aspx"> <code></code> </a> dans .NET ?</p>

464voto

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é!

375voto

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

56voto

Azhar Points 6800
<p><code></code>Arrondit le tout en nombre <code></code> arrondit vers zéro<p>par exemple</p><pre><code></code></pre></p>

42voto

Marek Grzenkowicz Points 9652
<p>Quelques exemples :<pre><code></code></pre></p>

21voto

edmastermind29 Points 1417
<p><a href="http://msdn.microsoft.com/en-us/library/system.math.floor.aspx"><code></code></a>tours « vers l’infini négatif » en conformité avec <a href="http://standards.ieee.org/findstds/standard/754-2008.html">le Standard IEEE 754</a> section 4.<p><a href="http://msdn.microsoft.com/en-us/library/system.math.truncate.aspx"><code></code></a>tours « à l’entier le plus proche vers zéro ».</p></p>

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