2009-03-03 13 views
12

Estoy consultando un campo de base de datos que devuelve un valor monetario, lo estoy asignando a una cadena pero está agregando 00 adicional al final.C# Moneda a la cadena

p. Ej. Consulta devuelve 30.00

asigno a un string (string value = Convert.ToString(ReturnValue);) pero cuando la producción es, que se muestra como 30.0000

¿Me puede aconsejar a dónde voy mal y la mejor manera de abordar esto?

+0

¿Cuál es el tipo .NET de la variable que está obteniendo de su base de datos (antes de convertirla en cadena)? –

+0

El OP puede usar los códigos de formato de cadena, para eso están ahí. –

Respuesta

1

Prueba esto:

yourValueHere.ToString("0.00") 
3

que haría uso de algo así como

string value = ReturnValue.ToString("0.00"); 

Este utiliza la sobrecarga ToString que acepta una cadena de formato. La cadena de formato anterior "0.00" especifica dos lugares decimales.

6

¿Desea formatear la cadena con un carácter de moneda?

Si es así ...

decimal m = 3.4; 

string s = string.Format("{0:c}", m); 

// s will be £3.40, $3.40, etc depending on your locale settings 
+0

gracias, funciona bien para mí ... –

0

En un tipo de datos SQL Server dinero es el equivalente a un decimal con 4 decimales de precisión. Supongo que esto es la precisión se conserva cuando el decimal se convierte en una cadena. La mejor opción sería utilizar siempre una cadena de formato, por ejemplo, "#, ## 0.00" al hacer la conversión.

0

El tipo de datos Money tiene una precisión de 4 posiciones decimales. Tendrá que especificar el formato en los argumentos ToString() o puede redondear el valor antes de convertirlo en una cadena.

Si utiliza .ToString() no está recibiendo ningún redondeo por lo que yo sé. Creo que solo pierdes los dígitos.

Si redondea, no sólo estás cortando dígitos. He aquí una muestra de redondeo (código no probado):

string value = Math.Round(ReturnValue, 2).ToString(); 
12

MartGriff,

Mi mejor consejo sería para convertirlo en un doble uso del tipo SqlMoney. ¡A partir de ahí, puede mostrarlo como lo desee!

He aquí un ejemplo:

System.Data.SqlTypes.SqlMoney ReturnValue; 

//Set your returnValue with your SQL statement 
ReturnValue = ExecuteMySqlStatement(); 

//Get the format you want 

//$30.00 
string currencyFormat = ReturnValue.ToDouble().ToString("c"); 

//30.00 
string otherFormat = ReturnValue.ToDouble().ToString("0.00"); 

Para más opciones de formato, visita nuestra MSDN:

http://msdn.microsoft.com/en-us/library/system.double.tostring.aspx

mejor de la suerte, espero que esto ayude.

2

Actualmente estoy desarrollando un sistema web boatdock, utilizando la edición de la Comunidad VS 2013. Estaba intentando averiguar cómo generar un valor de moneda en un cuadro de texto.

El método que utilicé era

fieldName.Text = decimalValue.ToString ("c");

Funciona perfectamente.

Cuestiones relacionadas