Problema con el redondeo en campos calculados |
Responder | Página 12> |
Autor | |
pascual14
Colaborador Unido: 30/Junio/2014 Localización: madrid Estado: Sin conexión Puntos: 530 |
Tema: Problema con el redondeo en campos calculados Enviado: 02/Julio/2019 a las 08:59 |
Hola amigos, estoy teniendo un problema con los campos calculados. Tengo varios campos calculados en una tabla que guarda el cuerpo de los albaranes. Ahí ya sabéis que hay sumas, restas, multiplicaciones etc. Yo tengo los campos calculados que devuelvan un formato moneda con 2 decimales y lo hace bien, pero solo cuando veo el resultado, pero si pincho dentro me pueden aparecer mas de 2 decimales. Por ejemplo si tengo 8,9 unidades a un precio de 1,45€ el resultado es 12,91€ pero si pincho en ese campo lo que tiene es 12,905€. Cual es el problema, pues que luego al sumar la base de un albarán, a veces da un resultado con una diferencia de 1 céntimo y eso no puede ser. He intentado todo pero ya no sé cómo hacerlo. Con round me redondeaba hacia abajo y no me servía. No sé como hacer esto. Si alguien sabe como solucionar este problema.
Gracias. |
|
Parche
Habitual Unido: 03/Julio/2018 Localización: Alicante Estado: Sin conexión Puntos: 170 |
Enviado: 02/Julio/2019 a las 09:25 |
Hola, No sé si te servirá, pero ¿y si pones en todos los campos que quieras resultados los mismos decimales? 2 ó 3 decimales para que siempre sea el mismo importe en todos los sitios. Saludos.
|
|
pascual14
Colaborador Unido: 30/Junio/2014 Localización: madrid Estado: Sin conexión Puntos: 530 |
Enviado: 02/Julio/2019 a las 14:34 |
Hola, eso ya lo tengo hecho, todos igual, pero no hace caso. Le digo que me devuelva un campo moneda con 2 decimales pero me guarda 3 o 4, no sé por que access hace estas cosas.
Gracias.
|
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 13990 |
Enviado: 02/Julio/2019 a las 16:05 |
Una cosa es lo que guarda Access y otra lo que muestra.
El campo moneda, específico para esto trabaja con 4 decimales siempre, si quieres que tenga menos hay que redondear. La función Redondeo de Access no es como la nuestra, lo suyo es que te fabriques una a tu medida, ... de todas formas si andas 'vago' de neuronas en el foro hay varios ejemplos de como hacerla. Un saludo.
|
|
pascual14
Colaborador Unido: 30/Junio/2014 Localización: madrid Estado: Sin conexión Puntos: 530 |
Enviado: 02/Julio/2019 a las 17:37 |
Hola Mihura ¿pero no estaba de vacaciones? lo tuyo es vicio jejej.
A estas te refieres? Public Function Redondea(dblnToR As Double, Optional intCntDec As Integer) As Double
Dim dblPot As Double Dim dblF As Double If dblnToR < 0 Then dblF = -0.5 Else: dblF = 0.5 dblPot = 10 ^ intCntDec Redondea = Fix(dblnToR * dblPot * (1 + 1E-16) + dblF) / dblPot End Function o bien esta otra Public Function Redondea(Numero As Double, decimales) As Double Redondea = Sgn(Numero) * Fix(Abs(Numero) * (10 ^ (decimales)) + 0.5) / (10 ^ (decimales)) End Function |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 13990 |
Enviado: 02/Julio/2019 a las 18:14 |
Por ejemplo la segunda ...
¿Vacaciones? ... ¿eso que es?
|
|
Maverick2019
Habitual Unido: 10/Junio/2019 Localización: Madrid Estado: Sin conexión Puntos: 145 |
Enviado: 04/Julio/2019 a las 09:58 |
Hola
Había un artículo muy bueno al respecto (kb 196652), pero se lo han cepillado En su lugar, he encontrado esto: https://answers.microsoft.com/es-es/msoffice/forum/all/redondeo/df0d58ff-11d6-40db-9137-a4ea0ea3fe73 ¿Que versión de Access utilizas? Salu2,
|
|
guarracuco
Moderador Unido: 24/Abril/2004 Localización: EEUU Estado: Sin conexión Puntos: 3239 |
Enviado: 04/Julio/2019 a las 14:45 |
Hay un modelo que plantea el método de pago Square el cual llama mucho mi atención y podría ser una solucion. Por nombrar solo una de las ventajas, se evitan el problema de separador de decimales que difiere según configuración del equipo. En su lugar, truncan dos decimales y multiplican por 100 y tratan con un entero. Esto también puede ser útil en las cadenas sql, ya que nos evitaría enmascarar columnas con decimales. |
|
Maverick2019
Habitual Unido: 10/Junio/2019 Localización: Madrid Estado: Sin conexión Puntos: 145 |
Enviado: 04/Julio/2019 a las 15:52 |
Hola Guarracuco.
¿Tienes algún link con información al respecto? Gracias. Salu2,
|
|
pascual14
Colaborador Unido: 30/Junio/2014 Localización: madrid Estado: Sin conexión Puntos: 530 |
Enviado: 04/Julio/2019 a las 17:22 |
Hola uso prácticamente todas, pues mis clientes tienen de todo, 2010, 2013, 2016 y yo 2019.
|
|
Maverick2019
Habitual Unido: 10/Junio/2019 Localización: Madrid Estado: Sin conexión Puntos: 145 |
Enviado: 04/Julio/2019 a las 17:26 |
Hola
El artículo que mencioné antes lo encontré aquí: https://jeffpar.github.io/kbarchive/kb/196/Q196652/ Salu2,
|
|
pascual14
Colaborador Unido: 30/Junio/2014 Localización: madrid Estado: Sin conexión Puntos: 530 |
Enviado: 04/Julio/2019 a las 19:01 |
Que locura con el redondeo. La segunda función no va bien. La cantidad 24,125 me la redondea a 24,12 pero es curioso que la cantidad 23,125 si que la redondea bien a 23,13. Voy a probar con la primera función.
|
|
Maverick2019
Habitual Unido: 10/Junio/2019 Localización: Madrid Estado: Sin conexión Puntos: 145 |
Enviado: 04/Julio/2019 a las 19:21 |
Hola.
Si, dependiendo de que tecnología implemente el redondeo, lo puede hacer de una manera u otra 😔 |
|
pascual14
Colaborador Unido: 30/Junio/2014 Localización: madrid Estado: Sin conexión Puntos: 530 |
Enviado: 04/Julio/2019 a las 20:18 |
Haciendo mil comprobaciones veo que es por la precisión decimal, en algunos cálculos devuelve un resultado con 3 decimales como 24,125 pero en otros devuelve mas cómo 24,1249990463257 y de ahí el por qué unos redondea por exceso y otros por defecto. Estos haciendo pruebas haciendo los cálculos en consultas con format(numero;"Moneda") y va redondeando bien. A ver cuando termine de comprobar...
|
|
guarracuco
Moderador Unido: 24/Abril/2004 Localización: EEUU Estado: Sin conexión Puntos: 3239 |
Enviado: 04/Julio/2019 a las 21:00 |
Hola Maverick. No hay mucho que leer al respecto en su documentacion. Simplemente la unidad monetaria esta basada en centimos. Antes de mostrar/ imprimir y hacer calculos, dividen el monto entre 100 y listo.
Editado por guarracuco - 04/Julio/2019 a las 21:00 |
|
Responder | Página 12> |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |