Decimales raros en consulta al dividir por 1

Necesitaría vuestra ayuda para solucionar un tema de decimales fantasma que me surgen al operar un valor en una consulta en Access del Office 365.

Supongamos de una tabla => [Valor] = 7,98

En la consulta => NuevoValor: [Valor]/1

el NuevoValor me está resultando en 7,98000001907349.

Si hago NuevoValor: [Valor] el resultado me trae correctamente.

Este tema me preocupa porque me puede estar desvirtuando otras muchas operaciones.

¿Sabríais cómo solucionarlo? ¿Cómo puedo evitarlo sin tener que emplear trampas como Int()?

2 Respuestas

Respuesta
1

Ya he encontrado la solución a mi problema, lo comparto por si puede ayudar al resto.

Los números almacenados en las tablas los almacenaba con formato Simple; y los procedimientos VBA como Single.

Parece ser que la precisión de este formato no es suficiente, por lo que para que las operaciones de números con decimales sea correcta en ACCESS, es necesario cambiar a formato DOBLE/DOUBLE (ó Decimal).

Realizando estos cambios se me ha solucionado; me queda testearlo para operaciones más complejas.

Otros foros comentan usar formato tipo moneda, pero sigue sin operarme bien ya que limitan al 4 decimal.

Respuesta
2

Una cosa es el valor que guarda en un campo y otra es el valor que muestra. Por ejemplo, supongamos que tengo una tabla, donde escribo

El campo Valor lo pongo como

Con lo que una vez que pierde el foco me queda

Pero si hago una consulta y no le digo nada, simplemente que divida Valor/1

Aunque le ponga como formato del campo. Si embargo si lo pongo como

Me queda

Muchisimas gracias por tu rápida respuesta,

me temo que no es un problema de nº de decimales ni redondeos. En el ejemplo [Valor] = 7,98 es el valor exacto (sin más decimales)... en la consulta, al dividirlo por 1 (probado directamente) me aparecen estos decimales fantasma.

El caso es que me pasa con más operaciones y estoy un poco asustado con este bug del Access pq me puede desvirtuar todo el trabajo...

En internet hablan de Redondeos o Truncados (usar Int([Valor]/1*100)/100)... pero quiero evitar hacer mis consultas más complejas de lo necesario... en teoría es una operación muy sencilla que te la hace bien hasta un simple Excel :O

alguna ayuda o recomendación?

Gracias de nuevo!

Personalmente no uso consultas, no me gustan. Si tengo la tabla donde campoB va a ser el resultado de CampoA/1

En el formulario le digo que después de actualizar del control campo A, el campoB sea igual a campoa/1.

Private Sub CampoA_AfterUpdate()
CampoB = CampoA / 1
End Sub

Anoto el valor

Cuando pulso Enter

Y en la tabla

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas