Requisitos: A menudo se usa para redondear y no es muy sensible a los requisitos de precisión.
Para lograr redondear dos decimales, el desarrollador escribió el siguiente código,
El código es muy sencillo, desarrolladoresEl resultado real fue 12,12, lo que contradecía el resultado de redondeo esperado de 12,13。
La razón de este resultado es que Math.Round no utiliza la regla de redondeo por defecto, sino que hace rondas para hacer par.
Redondea a cinco para formar un par
El llamado redondeo de seis a cinco para formar un par significa que, tras determinar los dígitos significativos, si el siguiente dígito significativo es menor o igual a 4, se redondea hacia abajo; si es mayor o igual a 6, se redondea hacia arriba por uno. Cuando el siguiente dígito significativo sea 5,
- Si el número anterior al 5 es impar, redondea cinco hacia arriba y avanza uno
- Si 5 es antes de un número par, salta 5 (0 es par).
Estadísticamente, redondear a par es más preciso que redondear a cinco, porque cuando hay muchos cálculos, redondear cada cinco a uno puede dar lugar a un número mayor.
Por ejemplo:
1,15+1,25+1,35+1,45 = 5,2
Si los dígitos significativos son un decimal, el resultado se obtiene usando el principio de redondeo
1.2 + 1.3 + 1.4 + 1.5 = 5.4
El resultado que se obtiene al redondear a cinco pares es
1.2 + 1.2 + 1.4 + 1.4 = 5.2
Esto muestra que la regla de redondeo da resultados más precisos.
Math.Round
Entonces, ¿cómo se utiliza Math.Round para lograr el redondeo esperado?
De hecho, Math.Round en C# proporciona muchos métodos de sobrecarga, incluyendo dos métodos:
Ambos métodos proporcionan un tercer parámetro llamado modo, que es una variable de enumeración de MidpointRounding con dos valores seleccionables
- AwayFromZero - resumiendo hacia arriba
- ToEven - redondeando a redondeando a par
Así que si queremos un resultado ideal redondeado, podemos usar el siguiente código:
Enumeración de redondeo a mitad de la historia, como se muestra a continuación:
Referencia:El inicio de sesión del hipervínculo es visible. |