Otros consejos

No es posible, una expresión regular no tiene ningún concepto de " números " ;. Podría usar un evaluador de coincidencias pero estaría agregando el código imperativo de c #, y se desviaría del requisito exclusivo de expresiones regulares.

.Net ha incorporado soporte para aritmética y redondeo de banqueros:

//midpoint always goes 'up': 2.5 -> 3
Math.Round( input, MidpointRounding.AwayFromZero );

//midpoint always goes to nearest even: 2.5 -> 2, 5.5 -> 6
//aka bankers' rounding
Math.Round( input, MidpointRounding.ToEven );

" A " el redondeo es realmente el valor predeterminado, aunque " lejos de cero " Es lo que aprendiste en la escuela.

Esto se debe a que, bajo el capó, los procesadores de computadoras también realizan redondeos bancarios.

//defaults to banker's
Math.Round( input );

Habría pensado que cualquier cadena de formato de redondeo se predeterminaría al redondeo de los banqueros, ¿no es este el caso?

Si está utilizando .NET 3.5, puede definir un método de extensión para ayudarlo a hacer esto:

public static class DoubleExtensions
{
    public static string Format(this double d)
    {
        return String.Format("{0:c}", Math.Round(d));
    }
}

Luego, cuando lo llamas, puedes hacerlo:

12345.6789.Format();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top