2012-08-27 18 views
7

Me gustaría mostrar solo un lugar decimal. He intentado lo siguiente:Formato de cadena para un solo lugar decimal?

string thevalue = "6.33"; 
thevalue = string.Format("{0:0.#}", thevalue); 

resultado: 6.33. Pero debería ser 6.3? Incluso 0.0 no funciona. ¿Qué estoy haciendo mal?

Respuesta

14

Necesita que sea un valor de coma flotante para que funcione.

double thevalue = 6.33; 

Here's a demo. En este momento, es sólo una cadena, por lo que será insertado como está. Si necesita analizarlo, use double.Parse o double.TryParse. (. O float o decimal)

+0

funciona perfectamente pero redondearía los números como '0.155' a' 0.2' .. ¡Es un pequeño problema! – Anirudha

+0

@Anirudha: http://stackoverflow.com/a/329982/707111 – Ryan

1

la opción 1 (deja que sea cadena):

string thevalue = "6.33"; 
thevalue = string.Format("{0}", thevalue.Substring(0, thevalue.length-1)); 

opción 2 (convertirla):

string thevalue = "6.33"; 
var thevalue = string.Format("{0:0.0}", double.Parse(theValue)); 

la opción 3 (el fuego de expresiones regulares):

var regex = new Regex(@"(\d+\.\d)"); // but that everywhere, maybe static 
thevalue = regexObj.Match(thevalue).Groups[1].Value; 
+1

y ¿qué pasa si 'thevalue' sería' "6.333" '? –

+0

bien ... revise el editado en unos pocos segundos ... – TheHe

+0

No hay '.Grupos [1]'. – Ryan

4

ToString() simplifica el trabajo. double.Parse(theValue).ToString("N1")

+0

funciona perfectamente pero redondearía los números como 0.155 a 0.2 ... ¡Es un pequeño problema! – Anirudha

4

Éstos son algunos ejemplos diferentes a considerar:

double l_value = 6; 
string result= string.Format("{0:0.00}", l_value); 
Console.WriteLine(result); 

Salida: 6,00

double l_value = 6.33333; 
string result= string.Format("{0:0.00}", l_value); 
Console.WriteLine(result); 

Salida: 6,33

double l_value = 6.4567; 
string result = string.Format("{0:0.00}", l_value); 
Console.WriteLine(result); 

Salida: 6,46

+2

Y el punto de esto es ...? – Ryan

+1

El punto es compartir información y ayudar a las personas, encontré esto útil. – reggaeguitar

16

Aquí es otra manera de dar formato a los números de punto flotante a medida que lo necesite:

string.Format("{0:F1}",6.33); 
1

Las otras respuestas redondeadas para mí si he elegido, por ejemplo, 6,39, o incluso algo larga como 6.398925. Este enfoque es convertir a una cadena tal y como son, a continuación, busque el punto decimal y regresar sólo un número después de que:

double val = 6.39; 
string truncatedString = val.ToString().Substring(0, val.ToString().IndexOf(".") + 2); 
Console.WriteLine(truncatedString); 
//returns 6.3 
0

favor esto: String.Format ("{0: 0.0}", 123.4567); // devuelve 123.5

Cuestiones relacionadas