Campos calculados con decimales (euro)

Si en un campo calculado efectúo la resta de 82,56 - 82,57 (tipo de datos Moneda) el resultado es -0,02. Para el cálculo de la resta me coge 82,555 y no me lo redondea según la normativa euro existente. ¿Qué solución tiene esto?.
Con el tipo de formato Euro o Moneda internamente no efectúa el redondeo correspondiente antes mencionado!.

1 Respuesta

Respuesta
1
Tu problema es que confundes formato (o máscara) con el dato, es decir lo que ves con lo que hay. En el campo no tienes 82,56 sino que tienes 82,555. Debes guardar en los campos el importe correcto, esto que parece de perogrullo a veces no se hace y da los problemas que te está dando a ti. Te recuerdo los formatos son muy bonitos, pero a veces ocultan la realidad.
Ante todo muchas gracias por tu respuesta, pero creo que soy un poco torpe. Vamos a ver, la situación es la siguiente; 82,555 es el dato en si resultado de una operación, por ejemplo una resta, y el usuario no interviene para nada en el resultado de esa operación, es decir, el usuario no introduce 82,555 para nada, esa cantidad es resultado de la operación resta. El problema es que el campo donde guardo el resultado de esa operación es de formato Moneda y ocurre que como dato es guardado como 82,555 pero lo visualiza como formato Moneda, curiosamente como 82,56 que es el valor que a mi me interesa para seguir realizando cálculos y no el 82,555 que es el que toma por defecto.
Bueno, no se si me entiendes por donde voy, pero la cuestión es que 82,555 es resultado de una operación que realiza la máquina y lo guarda en un campo tipo Moneda como 82,555 sin hacer el correspondiente redondeo y dejarlo como 82,56.
Muchas gracias de antemano. Un saludo
Lo que debes hacer es guardar el campo con dos decimales y no con tres o más. Es decir si estás realizando un cálculo que sea cantidad por precio y P.ej. la cantidad es de 8,4 y el precio 4,23 el resultado sería :
8,5 * 4,25= 36,125
Si almacenas esto seguirás con el problema, lo que debes hacer es antes de almacenar (y esto es una solución y seguramente existirá una mejor) multiplicar por 100, redondear a entero y dividir por 100, con lo que almacenas 36,13 que es la cantidad a procesar. Espero que te sirva. Los informáticos antiguos usamos la palabra máscara en lugar de formato (creo que además la 1ª es más acertada, porque una máscara distorsiona la realidad)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas