Formatear un flotador a 2 decimales


Actualmente estoy construyendo un módulo de ventas para un sitio web de clientes. Hasta ahora tengo el precio de venta para calcular perfectamente, pero donde he llegado atascado es formatear la salida a 2 decimales.

Actualmente estoy llamando a esto en una variable para que pueda vincular los datos de los resultados a una listview.

Sale = float.Parse(((x.Sale_Price - (x.Sale_Price * (x.Discount_Price / 100))).ToString())),

¿Puede alguien mostrarme cómo formatear la salida a 2 decimales?? ¡Muchas gracias!

Author: mskfisher, 2011-06-15

6 answers

Puede pasar el formato al método ToString, por ejemplo:

myFloatVariable.ToString("0.00"); //2dp Number

myFloatVariable.ToString("n2"); // 2dp Number

myFloatVariable.ToString("c2"); // 2dp currency

Formato de Número Estándar Cadenas

 381
Author: WraithNath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-09 07:33:09

Lo primero que debe hacer es usar el tipo decimal en lugar de float para los precios. Usar float es absolutamente inaceptable para eso porque no puede representar con precisión la mayoría de las fracciones decimales.

Una vez que hayas hecho eso, Decimal.Round() se puede utilizar para redondear a 2 lugares.

 40
Author: Michael Borgwardt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-15 10:36:57

String.Format("{0:#,###.##}", value)

Un ejemplo más complejo de Formato de cadena en C#:

String.Format("{0:$#,##0.00;($#,##0.00);Zero}", value);

Esto generará "$1,240.00" si se pasa 1243.50. Dará salida al mismo formato pero entre paréntesis si el número es negativo, y dará salida a la cadena "Cero" si el número es cero.

 35
Author: alexandrul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-25 14:21:49

Creo:

Cadena.Format ("{0: 0.00}", Sale);

Debería hacerlo.

Ver Enlace Ejemplos de Formato de cadena C #

 23
Author: Bit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-15 10:41:05
string outString= number.ToString("####0.00");
 2
Author: danyolgiax,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-15 10:34:37

Como ya se mencionó, tendrá que utilizar un resultado formateado; que se realiza a través de la Write(), WriteLine(), Format(), y ToString() métodos.

Lo que no se ha mencionado es el Formato de punto fijo que permite un número especificado de decimales. Utiliza una ' F 'y el número que sigue a la' F ' es el número de lugares decimales salidos, como se muestra en los ejemplos.

Console.WriteLine("{0:F2}", 12);    // 12.00 - two decimal places
Console.WriteLine("{0:F0}", 12.3);  // 12 - ommiting fractions
 0
Author: Jackson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-09 03:00:14