none
Resultado con 2 valores después de la coma RRS feed

  • 问题

  • 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

    2010年11月15日 13:34

答案

  • 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
    2010年11月15日 13:37
    版主
  • 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 misma

    podrias 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
    2010年11月15日 14:27
  • 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
    2010年11月15日 14:46

全部回复

  • 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
    2010年11月15日 13:37
    版主
  • Hola amigo

    Gracias por la respuesta.... te hago otra consulta, en lugar de salir con coma podría salir con punto? me refiero a que ahora sale 5,00 y necesitaría que salga como 5.00, hay alguna manera de que esto se haga?

    2010年11月15日 13:47
  • Hola,

     

    Algo como esto podría servirte

      lbl.Text = String.Format("{0:#.##}", ts.TotalMinutes.ToString)



    Jason Ulloa
    Mi Blog
    2010年11月15日 13:50
  • 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.


    2010年11月15日 14:11
  • 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.

     

    2010年11月15日 14:19
  • 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
    2010年11月15日 14:24
    版主
  • 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 misma

    podrias 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
    2010年11月15日 14:27
  • 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.
    2010年11月15日 14:36
  • 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
    • 已标记为答案 Cruznick 2010年11月15日 14:48
    • 取消答案标记 Cruznick 2010年11月15日 14:59
    2010年11月15日 14:37
    版主
  • 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
    2010年11月15日 14:46
  • 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));

    2022年9月11日 3:40