1

当用户上传它时,我正在读取一个包含十进制、字符串和 Unicode 字符的 excel 文件。读取一些十进制值(不是全部)时,我看到一个浮点错误。例如,如果一个数字是 0.15,那么它被读取为 0.150000000002。我需要将读取并存储在 DB 中的同一个 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]);```
4

1 回答 1

1

Javascript 在浮点数方面存在一些问题。

例如:

0.1 + 0.2
=> 0.30000000000000004

如果您的浮点数都有相同的小数位数,我建议您只删除这些浮点数。

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

如果小数位数不同,这不是很优雅并且不起作用。

我需要有关 this.data 对象外观的更多信息,以便为您提供代码片段来重构您的 this.data 对象/数组。

于 2021-08-30T11:24:21.530 回答