Título: Format - ¿Cómo conseguir 2 decimales SIN redondeo?(Solucionado) Publicado por: karmany en 3 Junio 2010, 20:39 pm Hola.
Estoy utilizando el DataReport conectado a una base de datos. Tengo un campo que lo he definido en la base de datos como single(coma flotante, precisión simple). Si el número es(las comas son los decimales): 3,346 puedo previsualizarlo en el DataReport de dos formas: 1) 3,346 que es sin dar ningún formato 2) 3,35 que es dando formato con dos decimales. Para conseguir esta segunda forma, basta con poner la propiedad format así: "0.00" El código para el que esté interesado es simplemente éste: Código
Mi pregunta es: Quiero conseguir que el DataReport me muestre solamente 3,34, sin redondeo. ¿Existe alguna forma de poner este formato con "Format"? Os puedo asegurar que he probado de todo: "##.##", "##.#0". No se me ocurre nada más... A ver si alguien sabe hacerlo. PD. Es una pena, pero si no se puede hacer con format, la solución será crear un nuevo campo de texto en la base de datos y manejar ese valor.... Muchas gracias Título: Re: Format - ¿Cómo conseguir 2 decimales SIN redondeo? Publicado por: BlackZeroX en 3 Junio 2010, 20:46 pm Lo que pides es .Net Te voy a responder en VB 6.0 FormatNumber(); Código:
Donde los parametros entre Corchetes son Opcionales!¡. Código
Dulce Infierno Lunar!¡. Título: Re: Format - ¿Cómo conseguir 2 decimales SIN redondeo? Publicado por: karmany en 3 Junio 2010, 20:56 pm Estoy utilizando VB6.
Voy a ver si puedo hacer algo con FormatNumber. La verdad que no lo sé porque en un DataReport no existe el evento text4_Change. La única opción de ponerle formato es mediante la propiedad format, tal como lo he hecho arriba en el evento DataReport_Initialize. No sé, voy a ver si puedo usar FormatNumber con Format. Gracias Título: Re: Format - ¿Cómo conseguir 2 decimales SIN redondeo? Publicado por: karmany en 4 Junio 2010, 02:12 am Después de buscar y rebuscar y de probar he encontrado la solución.
Primeramente decir que no he encontrado ninguna función en VB que trunque los decimales. Ni FormatNumber, ni Format, ni Round ni ninguna otra funcionan, así que he tenido que convertir el número en cadena y después trabajar con él. Pongo el código para ver si a alguien le puede ayudar: Código
Título: Re: Format - ¿Cómo conseguir 2 decimales SIN redondeo?(Solucionado) Publicado por: Dreamaker en 5 Junio 2010, 22:20 pm No se si es lo que buscabas, pero para truncar a 2 decimales es tan simple como:
Código
O si quieres truncar a n cantidad de cifras ingresadas por el usuario (2 cifras, por ej), es tan simple como: Código
Espero si esto es lo que buscabas, de una manera más rapida y sencilla, que te haya servido :D Título: Re: Format - ¿Cómo conseguir 2 decimales SIN redondeo?(Solucionado) Publicado por: Karcrack en 6 Junio 2010, 03:28 am :huh:
Código O directamente con la funcion FormatNumber(), pero si no me equivoco acaba llamando a Format() :P Título: Re: Format - ¿Cómo conseguir 2 decimales SIN redondeo?(Solucionado) Publicado por: Dreamaker en 6 Junio 2010, 21:12 pm :huh: Código O directamente con la funcion FormatNumber(), pero si no me equivoco acaba llamando a Format() :P Como sabrás Karcrack no soy partidario de usar funciones del VB, sino crear mis propias funciones (y saberlo hacer) sea en el lenguaje que sea :¬¬ Título: Re: Format - ¿Cómo conseguir 2 decimales SIN redondeo?(Solucionado) Publicado por: karmany en 11 Junio 2010, 20:49 pm Gracias Dreamaker por la ayuda. Al final sigo utilizando la mía que no falla.
He probado tu ejemplo pero no siempre funciona. Por ejemplo, a dos decimales: INICIAL FINAL ===================== 3.123 --> 3,12 Correcto 3.128 --> 3,12 Correcto 3.12 --> 3,11 No correcto 3.19 --> 3,19 Correcto 3.002 --> 3 Correcto 3.009 --> 3 Correcto 3.03 --> 3,02 No correcto 3.09 --> 3,08 No correcto 3.2 --> 3,2 Correcto 3.9 --> 3,9 Correcto He probado tu ejemplo con la función CSng en vez de Val, pero hace lo mismo. Pienso que la solución es manejar la cantidad como una String. Título: Re: Format - ¿Cómo conseguir 2 decimales SIN redondeo?(Solucionado) Publicado por: BlackZeroX en 11 Junio 2010, 23:02 pm Código
Código
Dulce Infierno Lunar!¡. Título: Re: Format - ¿Cómo conseguir 2 decimales SIN redondeo?(Solucionado) Publicado por: fabianmoyata en 18 Marzo 2018, 03:33 am Si claro, existen muchas formas de obtener el mismo resultado. Tanto en vb6 como en vb.net, yo lo haría así:
Código:
Ejemplo de uso de la función asumiendo un formulario con los siguientes objetos: Cajas de texto txtCanDec, para establecer la cantidad de decimales txtNumero, donde se registra el número txtResultado, donde se muestra el resultado Botón. btnCalcular Código: Private Sub btnCalcular_Click(sender As Object, e As EventArgs) Handles btnCalcular.Click De esta manera se puede obtener el mismo resultado. |