Altri suggerimenti

Non è possibile, un'espressione regolare non ha alcun concetto di "numeri". Puoi utilizzare un valutatore delle corrispondenze ma dovresti aggiungere un codice c # imperativo e allontanarti dal tuo unico requisito regex.

.Net ha integrato il supporto per gli arrotondamenti di aritmetica e bancari:

//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 );

" Per uniformare " l'arrotondamento è in realtà l'impostazione predefinita, anche se "lontano da zero" è quello che hai imparato a scuola.

Ciò è dovuto al fatto che anche i processori informatici eseguono l'arrotondamento dei banchieri.

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

Avrei pensato che qualsiasi stringa del formato di arrotondamento sarebbe predefinita all'arrotondamento dei banchieri, non è questo il caso?

Se stai usando .NET 3.5, puoi definire un metodo di estensione che ti aiuti a farlo:

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

Quindi, quando lo chiami, puoi fare:

12345.6789.Format();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top