Estoy leyendo un archivo de Excel que tiene caracteres decimales, de cadena y Unicode cuando el usuario lo carga. Veo un error de punto flotante al leer algunos valores decimales (no todos). Por ejemplo, si un número es 0,15, se lee como 0,150000000002. Necesito comparar datos del mismo archivo de Excel que se lee y almacena en DB con los datos leídos de Excel para encontrar la diferencia en ambos. Estoy usando xlxs-js y también intenté usar exceljs pero no pude resolver el problema.
reader.onload = (e: any) => { /* read workbook */ const bstr: any = e.target.result; const wb: XLSX.WorkBook = XLSX.read(bstr, {type: 'buffer'}); /* grab first sheet */ const wsname: string = wb.SheetNames[1]; const ws: XLSX.WorkSheet = wb.Sheets[wsname]; /* save data */ this.data = (XLSX.utils.sheet_to_json(ws, {header: 1})); console.log(this.data) }; reader.readAsArrayBuffer(target.files[0]);```Javascript tiene algunos problemas con los números de punto flotante.
Por ejemplo:
0.1 + 0.2 => 0.30000000000000004Si todos sus números de coma flotante tienen la misma cantidad de lugares decimales, recomendaría simplemente eliminar estos dígitos de coma flotante.
parseFloat((0.1 + 0.2).toFixed(2)) => 0.3Esto no es muy elegante y no funciona si tiene diferentes cantidades de lugares decimales.
Necesitaría más información sobre cómo se ve su objeto this.data para darle un fragmento de código para refactorizar su objeto/matriz this.data.