Principales respuestas
convertir de decimal con decimales a string sin redondear

Pregunta
-
Hola grupo:
Quiero convertir un decimal que contiene decimales a string pero sin que me redondee.
Si tengo lo siguiente:
Decimal d = 1,345;
string cad = d.ToString("N2);
en cad tendia 1,35 (cosa que por otro lado es correcta). Pero no encuentro ningun parametro para el ToString que me devuelva 1,34. El otro problema que tengo que es que no puedo usar un metodo (convertir el decimal a string, contar cuantos caracteres hay detras de la coma, recortar, etc) porque tambien necesito "recortar" el decimal en un datagribview y la unica forma que tengo sin perder la informacion es con la propiedad Format.
Gracias por adelantado
Respuestas
-
Leandro, con el código podrias tener un problema si solo hay un decimal.
Creo que algo asi podria solucionarlo(lo digo de memoria)
string decimales = partes[1].Substring(0,(partes[1].Length>=2?2:partes[1].Length));
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- Marcado como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator viernes, 14 de enero de 2011 21:42
-
hola
Decimal d = 1,345;
string[] partes = d.ToString().Split(",");
string decimales = partes[1].Substring(0,2);
decimal resultado = Convert.ToDecimal(string.Format({0}{1}), partes[0], decimales));
igual aqui siempre contemplo que habra decimales, si detectas que el Length de partes no hace el Split entonces es porque es un valor enterotambien podrias suar el decimal.TryParse() para verificar que sea decimal antes de convertir
con respecto al DataGridView por el tipo de formato solo podrias usar el evento CellFormatting
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Editado Leandro TuttiniMVP jueves, 14 de octubre de 2010 15:02
- Marcado como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator viernes, 14 de enero de 2011 21:42
-
hola jtorrecilla
si lo imagine, el ejmeplo lo arme solo como una alternativa, que por supuesto hay que adaptar un poco, solo intente mostrar el camino, las validaciones y retoques se agregarian si de esta forma le es util
por eso tambien aclare si llega a no tener decimales
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator viernes, 14 de enero de 2011 21:42
-
Juanjo_16V revisa este enlace: http://msdn.microsoft.com/es-es/library/fht0f5be(VS.80).aspx a ver si encuentras el formato que deseas.
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- Marcado como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator viernes, 14 de enero de 2011 21:42
Todas las respuestas
-
hola
Decimal d = 1,345;
string[] partes = d.ToString().Split(",");
string decimales = partes[1].Substring(0,2);
decimal resultado = Convert.ToDecimal(string.Format({0}{1}), partes[0], decimales));
igual aqui siempre contemplo que habra decimales, si detectas que el Length de partes no hace el Split entonces es porque es un valor enterotambien podrias suar el decimal.TryParse() para verificar que sea decimal antes de convertir
con respecto al DataGridView por el tipo de formato solo podrias usar el evento CellFormatting
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Editado Leandro TuttiniMVP jueves, 14 de octubre de 2010 15:02
- Marcado como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator viernes, 14 de enero de 2011 21:42
-
Leandro, con el código podrias tener un problema si solo hay un decimal.
Creo que algo asi podria solucionarlo(lo digo de memoria)
string decimales = partes[1].Substring(0,(partes[1].Length>=2?2:partes[1].Length));
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- Marcado como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator viernes, 14 de enero de 2011 21:42
-
hola jtorrecilla
si lo imagine, el ejmeplo lo arme solo como una alternativa, que por supuesto hay que adaptar un poco, solo intente mostrar el camino, las validaciones y retoques se agregarian si de esta forma le es util
por eso tambien aclare si llega a no tener decimales
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator viernes, 14 de enero de 2011 21:42
-
Gracias pero no es lo que busco, no me he debido de explicar bien.
Lo que quiero es una "Cadenas con formato numérico" para poder ponerselo a la propiedad format de un datagridview, y que me recorte un numero sin redondear.
Ya se que programando puedo convertir el decimal a cadena, recortar, etc. pero eso no lo puedo hacer directamente sobre el datagrid.
saludos
-
Juanjo_16V revisa este enlace: http://msdn.microsoft.com/es-es/library/fht0f5be(VS.80).aspx a ver si encuentras el formato que deseas.
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- Marcado como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator viernes, 14 de enero de 2011 21:42
-
Hola saludos, mira yo he desarrollado mi propio metodo para poder realizar el de mostrar solo dos numeros despues del punto decimal pero sin redondearlo yo lo ago de la siguiente forma.
public string mostrar_dos_decimas(string b)
{
string a = ""; int xc = 0; int xc2 = 0;
for (int i = 0; i < b.Length; i++)
{
if (b.Substring(i, 1) != "." & xc == 0)
{
a += b.Substring(i, 1);
}
else
{
xc = 1;
if (xc2 < 3)
{
a += b.Substring(i, 1);
}
xc2++;
}
}
return a;
}Solo le mandas el valor con todo los decimales que yeva, pero el te regresa solo con dos numeros depues del punto decimal y sin redondear, tienes que mandarle en forma string los valores. espero te sirva. saludos