积极答复者
Resultado con 2 valores después de la coma

问题
-
hola amigos...
Resulta que tengo una variable tipo float, pero necesito que el resultado me lo muestre siempre con 2 valores después de la coma aunque estos valores sean 0 o sea.... realizo algún calculo y el resultado me da 5, pues quiero que salga 5.00, si da 5.25 pues que salga justo así 5.25
No encuentro como especificar la cantidad de valores después de la coma (para que siempre salga con esta cantidad). Gracias por la ayuda, Saludos
答案
-
umh, Prueba con ToString("N2")
Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
Si la respuesta te ha sido util Votala.
Mi Blog: Jtorrecilla
Enlace a Faq de Winforms en Ingles Muy bueno- 已标记为答案 Cruznick 2010年11月15日 14:48
-
hola
si quieres que salga con punto usa
txtValor.Text = val.ToString("N2", CultureInfo.CreateSpecificCulture("en-US"))
pero igual este cambio es medio rebuscado, si la cultura de la aplciacion esta definida para usar la coma como decimales, no es bueno que la muestres como punto
por ahi debas definir una cultura fija en la aplicacion para que todo sea la mismapodrias agregar la linea
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
al principio de la ejeuccion de la aplicacion y asi usar siempre el punto como separador de decimales
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- 已标记为答案 Cruznick 2010年11月15日 14:48
-
Hola leandro
Gracias a sus aportes hice esto:
System.Globalization.CultureInfo.CreateSpecificCulture("en-US"), pero dentro del método que lleva a cabo la impresión de esa forma, me cambia la cultura solo en el momento que esta pasando el valor float con mis especificaciones al objeto PrintPageEventArgs e, o sea que no me esta modificando la cultura de mi aplicación por completo. Muchísimas gracias amigos, la verdad es que son de mucha ayuda. Saludos
- 已标记为答案 Cruznick 2010年11月15日 14:48
全部回复
-
umh, Prueba con ToString("N2")
Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
Si la respuesta te ha sido util Votala.
Mi Blog: Jtorrecilla
Enlace a Faq de Winforms en Ingles Muy bueno- 已标记为答案 Cruznick 2010年11月15日 14:48
-
lbl.Text = String.Format("{0:#.##}", ts.TotalMinutes.ToString)
Jason Ulloa
Mi Blog
double valor = 5;
Console.WriteLine(string.Format("{0:0.00}", valor));
-->5,00
En cuanto al manejo del punto esto tal vez te de una respuesta (http://www.elguille.info/NET/dotnet/averiguar_el_separador_decimal.htm ):
string s;
s = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator;
Console.WriteLine("El separador decimal es: '" + s + "'");
s = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyGroupSeparator;
Console.WriteLine("El separador de miles es: '" + s + "'");Salu2.
-
Hola amigo Jason...
La verdad lo probé en mi aplicación, y no funciona, ni siquiera me representa el formato con 2 lugares después de la coma.
obviamente adapte tu ejemplo a mis necesidades, no creas que copie y pegue ;-)
quedo algo así:
String.Format("{#.##}",/* aquí le pase el objeto que me da acceso a la variable float o sea obj.getVariableFloat.ToString()*/)
así que por el momento solo me ha funcionado pasandole "N2" al ToString() con el detalle de que me representa la coma y no el punto. De todas maneras, lo que me has sugerido no es incorrecto, lo he usado para otras cosas y me funciona, pero en este caso no. Te agradezco por la ayuda, porque ya no me acordaba de como hacerlo aunque lo que hacia antes era mas bien redefinir el tostring (pero te hablo de C++, nunca lo hice con C#). Bueno amigo saludos y mi agradecimiento.
-
Cruznick, la "," te la muestra porque será el caracter separador de la Cultura del Equipo en el que deserrollas, si estás usando una cultura "Española" será asi, si por ejemplo usases una cultura "en-US" el caracter separador de decimales seria el "."
Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
Si la respuesta te ha sido util Votala.
Mi Blog: Jtorrecilla
Enlace a Faq de Winforms en Ingles Muy bueno -
hola
si quieres que salga con punto usa
txtValor.Text = val.ToString("N2", CultureInfo.CreateSpecificCulture("en-US"))
pero igual este cambio es medio rebuscado, si la cultura de la aplciacion esta definida para usar la coma como decimales, no es bueno que la muestres como punto
por ahi debas definir una cultura fija en la aplicacion para que todo sea la mismapodrias agregar la linea
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
al principio de la ejeuccion de la aplicacion y asi usar siempre el punto como separador de decimales
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- 已标记为答案 Cruznick 2010年11月15日 14:48
-
Gracias por la respuesta Jtorrecilla... bueno algo de lo que me comentas lo había escuchado, pero quiero que todo sea estándar, por eso independientemente de la cultura del equipo quiero que se imprima con "." y no con "," igualmente este cambio de carácter no me afecta en nada porque este dato lo uso solo para mandar a imprimir(solo en ese momento necesito que el carácter sea "."). Gracias por la aclaración.
-
Pues tal como te comenta Leandro,
O cambias la cultura a una cultura donde el "." sea el separador de decimales, o a la hora de mostrar el valor usas:
txtValor.Text = val.ToString("N2", CultureInfo.CreateSpecificCulture("en-US"))
Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
Si la respuesta te ha sido util Votala.
Mi Blog: Jtorrecilla
Enlace a Faq de Winforms en Ingles Muy bueno -
Hola leandro
Gracias a sus aportes hice esto:
System.Globalization.CultureInfo.CreateSpecificCulture("en-US"), pero dentro del método que lleva a cabo la impresión de esa forma, me cambia la cultura solo en el momento que esta pasando el valor float con mis especificaciones al objeto PrintPageEventArgs e, o sea que no me esta modificando la cultura de mi aplicación por completo. Muchísimas gracias amigos, la verdad es que son de mucha ayuda. Saludos
- 已标记为答案 Cruznick 2010年11月15日 14:48
-
Buenisima esta normalizacion. me funciono perfecto.
Console.Write("Ingrese nota certamen 1: ");
int a = int.Parse(Console.ReadLine());
Console.Write("Ingrese nota certamen 2: ");
int b = int.Parse(Console.ReadLine());
Console.Write("Ingrese nota laboratorio: ");
int l = int.Parse(Console.ReadLine());
float NC = ((float)((60 - l * 0.3) / 0.7));
Console.WriteLine(String.Format("Necesita nota {0:0.##} en el certamen 3", NC * 3 - a - b));