Pregunta

Cuál es la diferencia entre Math.Floor() y Math.Truncate() ¿en la red?

No hay solución correcta

Otros consejos

Math.Floor redondea hacia abajo, Math.Ceiling redondea, y Math.Truncate redondea hacia cero.De este modo, Math.Truncate es como Math.Floor para números positivos, y como Math.Ceiling para números negativos.Aquí esta la referencia.

Por completitud, Math.Round redondea al número entero más cercano.Si el número está exactamente a medio camino entre dos números enteros, entonces se redondea hacia el número par. Referencia.

Ver también: La respuesta de Pax Diablo..¡Muy recomendable!

Siga estos enlaces para obtener descripciones de MSDN de:

  • Math.Floor, que se redondea hacia abajo hacia el infinito negativo.
  • Math.Ceiling, que se redondea hacia el infinito positivo.
  • Math.Truncate, que se redondea hacia arriba o hacia abajo hacia cero.
  • Math.Round, que redondea al número entero más cercano o al número especificado de decimales.Puede especificar el comportamiento si es exactamente equidistante entre dos posibilidades, como redondear para que el dígito final sea par ("Round(2.5,MidpointRounding.ToEven)" convirtiéndose en 2) o de modo que esté más alejado de cero ("Round(2.5,MidpointRounding.AwayFromZero)" convirtiéndose en 3).

El siguiente diagrama y tabla pueden ayudar:

-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

Tenga en cuenta que Round es mucho más poderoso de lo que parece, simplemente porque puede redondear a un número específico de decimales.Todos los demás siempre redondean a cero decimales.Por ejemplo:

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

Con las otras funciones, debes usar el truco de multiplicar/dividir para lograr el mismo efecto:

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

Math.Floor() se redondea hacia el infinito negativo

Math.Truncate redondea hacia arriba o hacia abajo hacia cero.

Por ejemplo:

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

mientras

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

Algunos ejemplos:

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

Son funcionalmente equivalentes con números positivos.La diferencia está en cómo manejan los números negativos.

Por ejemplo:

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

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

Enlaces MSDN:- Método Math.Floor - Método Math.Truncate

PDCuidado con Math.Round, puede que no sea lo que esperas.

Para obtener el resultado del redondeo "estándar", utilice:

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

Math.Floor() Ronda "hacia el infinito negativo" en cumplimiento de Estándar IEEE 754 Sección 4.

Math.Truncate() redondea "al entero más cercano hacia cero".

math.floor()

Devuelve el mayor entero menor o igual que el número especificado.

MSDN sistema.matemáticas.piso

math.truncate()

Calcula la parte integral de un número.

MSDN sistema.matematicas.truncar

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

Además Matemáticas.Ronda()

   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

Math.floor deslízate hacia la izquierda...
Math.ceil deslízate hacia la derecha...
Math.truncate criiiiss crooooss (piso/techo siempre hacia 0)
Math.round cha cha, muy suave...(ir al lado más cercano)

¡Vamos a trabajar!(⌐□_□)

A la izquierda... Math.floor
Retírenlo ahora todos... --
Dos saltos esta vez... -=2

Todos aplaudan ✋✋

¿Cuan bajo Puedes ir?¿Puedes bajar bajo?Todo el camino hasta el floor?

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

Math.truncate(x) también es lo mismo que int(x).
Al eliminar una fracción positiva o negativa, siempre te diriges hacia 0.

Math.Floor():Devuelve el entero más grande menor o igual que el número de punto flotante de doble precisión especificado.

Math.Round():Redondea un valor al número entero más cercano o al número especificado de dígitos fraccionarios.

Mat.floor() siempre se redondeará hacia abajo, es decir, devuelve un entero MENOR.Mientras round() devolverá el entero MÁS CERCANO

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top