Lucía comparte piso en Valencia con tres personas y estaba harta de la hoja de cálculo de los gastos, que nadie actualizaba. Un viernes por la tarde se hizo algo más sencillo: un cuadro de texto donde cada uno pega sus gastos del mes, uno por línea, y una tabla que dice quién debe a quién. Lo escribió en Elffuss Code, en una pestaña del navegador, con el asistente al lado.
La primera versión hacía lo de siempre: partir cada línea por el guion, pasar el importe por parseFloat y sumar. Probó con «Butano - 23,40» y le salieron 23 euros. Cambió la coma por un punto antes de convertir, le salió 23,4 y lo dio por bueno. Luego pegó «Alquiler - 1.500». La app repartió 0,375 euros por cabeza. Un chollo de piso.
El arreglo evidente rompía otra cosa
Lo primero que se le ocurrió fue quitar todos los puntos y después cambiar la coma por punto. Así «1.500» pasaba a 1500 y «23,40» a 23,4. Le pidió al asistente que lo revisara y, en vez de darle el visto bueno, le devolvió una lista de entradas para probar: «1.500», «1.500,25», «23,40», «12.5», «1,500.00». La cuarta era la trampa. Marcos, uno de sus compañeros, copia los cargos tal cual desde la app de su banco, que usa el punto como decimal. Con la regla nueva, sus 12.5 euros de la compra se convertían en 125.
Mirando la lista vieron que el símbolo no sirve para distinguirlos, y que lo que sí sirve es el número de cifras. Un importe en euros nunca lleva tres decimales. Con eso salió una regla que no depende de quién escriba:
- Si el último separador, sea punto o coma, va seguido de una o dos cifras, es el decimal: «23,40», «12.5», «1.500,25».
- Si va seguido de exactamente tres cifras, es de millar: «1.500», «1,500».
- Los demás separadores tienen que ser del otro símbolo y separar grupos de tres: «1,500.00» vale y «1.500.00» no.
- Todo lo demás («1.5.0», «12,3456», «1.50,5») no se suma. La línea se pone en rojo y se pide que se corrija.
Lo último es lo que más le gustó. Antes, la app adivinaba en silencio y se equivocaba sin avisar. Ahora, si algo no cuadra, lo enseña en rojo. Lucía guardó aquella lista de entradas como pruebas y añadió las suyas, entre ellas un «−15» de una devolución que acabó necesitando su propio caso.
Lo que había en el prompt
Para que el asistente entendiera el problema, Lucía no le pasó un ejemplo inventado: le pegó el mes de verdad. El alquiler, el nombre de cada compañero, las compras de Marcos con el nombre del súper y quién había adelantado la factura de la luz. Son las cuentas de cuatro personas que no le han dado permiso para mandarlas a ningún sitio. En Elffuss Code el modelo corre dentro de la propia pestaña, sobre la GPU de su ordenador, así que ni el código ni esa lista salieron de allí. Por eso pudo depurar con los datos de verdad en vez de inventárselos, y fueron justo los datos de verdad los que destaparon el fallo.
parseFloat no sabe de qué banco has copiado el número. Si la entrada puede leerse de dos maneras, mejor marcarla en rojo que sumarla mal.
Abre Elffuss Code y prueba tu próxima utilidad con tus datos reales: el modelo corre en tu navegador y no sube nada a ningún servidor.
Abrir Code →