Hola Foxeros!!
Les cuento, en mi modulo de facturación el día de ayer me marco un error al momento de mandar a timbrar una factura y el error decia diferencia en los importes, revisando encontre la diferencia, cuando se captura la factura se hace la operación de multiplicar cantidad por precio unitario para obtener el subtotal redondeado a 2 decimales y para el proceso de generación del XML creo un archivo de texto donde hago de nuevo el calculo usando ALLTRIM(STR(item_factura.Cantidad * item_factura.prec_unit,12,2)) para que el resultado sea tipo texto y resulta que en este último si me redonde bien y en el proceso de captura lo redonde mal.
El campo cantidad lo tengo numerico 11,3 y el de prec_unit lo tengo numerico 12,5
La operación en cuestion tiene los siguientes valores Cantidad = 1629.850 y Precio_unit = 70.50000 que al multiplicarlo sin redondeo me da 114904.425000
cuando redondeo round(cantidad*prec_unit,2) me da 114904.42
cuando utilizo el alltrim(str()) me da 114904.43
Y no encuentro el porque no lo esta redondeando,
Despues de hacer varias pruebas encontre que si aplico el redondeo a toda la operación y dentro de esa operación redondeo cualquiera de los 2 campos en cuestión si me redondea bien, es decir, si hago lo siguiente si redondea
round( round(cantidad,2) * prec_unit,2) o round( cantidad * round(prec_unit,2),2) o round( round(cantidad,2) * round(prec_unit,2),2) cualquiera de estos 3 si redondea bien porque no lo se, alguien sabe porque?
Salu2!!