2011-02-14 10 views

Respuesta

26

es una cadena o un doble? Si se trata de una cadena:

double d = double.Parse(s,CultureInfo.InvariantCulture); 
string s=string.Format("{0:0.00}",d); 

si ya es un formato doble sólo usar la segunda línea.

+0

lo que necesito es IFormatProvider formato – MonsterMMORPG

+0

El proveedor de formato CultureInfo.InvariantCulture es la de usar si su decimal separador es siempre ".", ¿qué es exactamente lo que necesita saber? –

+0

Y si quieres hacerlo sin ceros finales puedes usar [{0: #, 0. ######}] (http://stackoverflow.com/a/20146494/492336) – sashoalm

10

No no es doble 0.55 - el número no se puede representar con precisión como una fracción binaria. Probablemente, esa es la razón por la que obtuviste esa larga cuerda. Probablemente deberías estar utilizando el tipo decimal en lugar de double.

Lea The Floating-Point Guide para comprender por qué.

+0

lo que necesito es correcto iformatprovider format – MonsterMMORPG

+4

@PokemonCraft: No. Lo que necesita es entender por qué lo que quiere es imposible y no tiene sentido. –

48

puede utilizar este código para reducir pieza de precisión:

double m = Math.Round(0.55000000000000004,2); 

resultado sería: 0,55

Cuestiones relacionadas