Ошибка с плавающей запятой при чтении файла Excel из js

Я читаю файл Excel, содержащий десятичные, строковые символы и символы Unicode, когда пользователь загружает его. Я вижу ошибку с плавающей запятой при чтении некоторых десятичных значений (не всех). Например, если число 0,15, оно читается как 0,150000000002. Мне нужно сравнить данные из одного и того же файла Excel, который читается и хранится в БД, с данными, считанными из Excel, чтобы найти разницу в обоих. Я использую xlxs-js, а также пробовал использовать exceljs, но не смог решить проблему.

         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]);```

1 ответ

В Javascript есть некоторые проблемы с числами с плавающей запятой.

Например:

      0.1 + 0.2
=> 0.30000000000000004

Если все ваши числа с плавающей запятой имеют одинаковое количество десятичных знаков, я бы рекомендовал просто удалить эти цифры с плавающей запятой.

      parseFloat((0.1 + 0.2).toFixed(2))
=> 0.3

Это не очень элегантно и не работает, если у вас разное количество десятичных знаков.

Мне понадобится дополнительная информация о том, как выглядит ваш объект this.data, чтобы предоставить вам фрагмент кода для рефакторинга вашего объекта / массива this.data.

Другие вопросы по тегам