El céntimo que falta
Tú sumas las líneas, la administración del cliente suma las líneas, y los dos totales difieren en un céntimo. Nadie se ha equivocado en la aritmética. Hay dos causas — redondear en momentos distintos y la forma en que los ordenadores guardan las fracciones decimales — y las dos se evitan sabiendo dónde muerden.
El dinero no es un decimal, es un entero de céntimos
Los ordenadores guardan 0,1 y 0,2 como fracciones binarias muy próximas pero no exactas, así que 0,1 más 0,2 no da 0,3 en la mayoría de lenguajes. En una línea no lo nota nadie. A lo largo de cuarenta líneas y un cálculo de impuesto, el error se acumula en un céntimo visible. La aplicación nunca guarda un importe como decimal: cada precio se convierte en **céntimos enteros** al escribirlo, toda la aritmética ocurre con enteros y solo se convierte de vuelta para mostrarlo. Esa es la diferencia entre un total correcto y uno correcto casi siempre.
Redondear una vez, en un solo sitio
La segunda causa es más sutil. Toma tres líneas de 3 unidades a 0,335. Si redondeas cada línea primero, salen 1,01 tres veces: 3,03. Si sumas primero y redondeas una vez, sale 3,02. Aritméticamente ninguno está mal; son respuestas a preguntas distintas. Lo que sí está mal es hacer las dos cosas en el mismo documento — redondear las líneas para mostrarlas pero sumar los valores sin redondear — porque produce una factura en la que las líneas visibles no suman el total visible. La aplicación redondea una vez, por línea, y luego suma las líneas redondeadas.
Dónde esconde un céntimo el descuento
Un descuento porcentual sobre el total no se reparte en partes iguales entre las líneas. El diez por ciento de tres líneas de 3,33 es 0,999 — un tercio de céntimo por línea, que no se puede imprimir. Si redondeas cada parte a la baja pierdes un céntimo del total; al alza, ganas uno. La aplicación calcula el descuento sobre la base, lo reparte entre las líneas y coloca el resto en una de ellas, de modo que la suma de las líneas con descuento coincide exactamente con la base descontada. No hay solución elegante a esto, solo la disciplina de que los números visibles sean consistentes.
Monedas sin céntimos
No todas las monedas tienen dos decimales. El yen japonés no tiene ninguno: un importe es un número entero de yenes y no hay subunidad a la que redondear. Un sistema que fija dos decimales produce precios como ¥1.250,00, que no es como se escribe el yen, y peor aún, redondea a la centésima de una unidad que no existe. La aplicación guarda el número de decimales **por moneda** y redondea a eso.
Preguntas frecuentes
¿Por qué mi factura difiere en un céntimo de mi hoja de cálculo?
Normalmente porque uno redondea cada línea y el otro solo el total. Ambas son defendibles; mezclarlas en un mismo documento no.
¿Redondeo por línea o sobre el total?
Por línea, y luego suma las líneas redondeadas: así las líneas impresas suman el total impreso. Algunos regímenes fiscales tienen preferencia.
¿De verdad 0,1 + 0,2 no es 0,3?
En coma flotante binaria no: es 0,30000000000000004. Por eso el dinero se maneja en céntimos enteros.
¿Por qué un descuento porcentual deja resto?
Porque un porcentaje de un total rara vez se divide en céntimos exactos entre las líneas. El resto tiene que caer en una.
¿Cómo trata la aplicación el yen japonés?
Como moneda de cero decimales: importes en yenes enteros, sin subunidad ni redondeo a céntimos.
¿No puedo corregir el total a mano?
No. Un total que no es la suma de las líneas es lo primero que ve quien revisa. Corrige la regla de redondeo.
Facturas cuyos totales cuadran de verdad. Invoice Maker crea facturas, proformas, presupuestos y recibos en el navegador, hace las cuentas en céntimos enteros para que la línea de IVA no se desvíe, y exporta un PDF. No se sube nada.
Crear una factura en el navegador