2010-07-14 15 views
10

Tengo un código como:¿Cómo puedo formatear un doble en una cadena y solo mostrar dígitos decimales cuando es necesario?

lblFranshizShowInvwNoskhehEdit.Text = string.Format("{0:n}", 
    (double)(int.Parse(drDarman["FranshizDarsad"].ToString()) * 
     Convert.ToInt64(RadNumerictxtPayInvwNoskhehEdit.Text))/100); 

Pero {0:n0} formato de cadena obliga el texto de la etiqueta para no tener dígitos decimales y {0:n} formato de cadena obliga el texto de la etiqueta para tener 2 dígitos decimales (por defecto).

En mi caso, solo quiero dígitos decimales cuando sea necesario/sin redondearlos/¿cómo puedo hacer eso?

+4

Por favor, no Ponga cosas como "asp.net/C#" en el título, solo use las etiquetas para eso. Además, esto no tiene nada que ver con ASP.NET, excepto que está colocando la cadena que ingresa en la propiedad 'Text' de un control' Label'. –

Respuesta

23

sólo se puede hacer:

string.Format("{0}", yourDouble); 

Incluirá sólo dígitos cuando sea necesario.

Si quieres otros ejemplos de formatear dobles en string echa un vistazo a este link.

EDIT: Basado en su comentario que desea el separador , por lo que podría hacer:

string.Format("{0:0,0.########}", yourDouble); 

Sólo hay que poner la mayor cantidad # para el número máximo de decimales que desea mostrar. Solo mostrará los dígitos cuando sea necesario, pero hasta los dígitos máximos según la cantidad de # que incluya en el formato. El # significa que solo muestra un dígito si es necesario, por lo que si proporciona un número como 123 sin decimal, se mostrará como 1,234, pero si le da 1234.456, se mostrará como 1,234.456. Si supera los dígitos máximos que ha especificado, se redondearán.

EDIT: Para solucionar su escenario de doble cero simplemente cambiarlo a:

string.Format("{0:#,0.########}", yourDouble); 

que debería funcionar perfectamente ahora :)

+0

pero en este caso perderé miles de separadores! ¿cómo puedo solucionar esto? – MoonLight

+0

realmente aprecio mucho por su edición // realmente me disculpo/pero en este nuevo código 0.4 es como 00.4 ... ¿cómo solucionar esto? – MoonLight

+0

@LostLord actualizó mi respuesta para abordar ese problema. Espero que ayude. – Kelsey

0

esto es mío:

string.Format("{0:n2}", double); 
Cuestiones relacionadas