首页 > 解决方案 > 是否存在严重的 Javascript 引擎错误?

问题描述

在 NodeJS 无服务器上编写应用程序后端时,我偶然发现了一个非常奇怪的行为。

当我使用某个数字并将其乘以一百时,似乎会导致 JS 引擎出错...我也在基本网页上的一个简单标签上尝试过,错误仍然相同,它也一样做出反应。我尝试了不同的浏览器(Chrome 86.0.4240.80、Safari 14.0、Firefox 82.0 ......我在 MacOS Catalina 10.15.7 上运行,但我也尝试在我的 iphone 上使用 IOS 14 并且错误仍然存​​在......它似乎是全球性的...... .

const toFixedNumber = (toFixTo = 2, base = 10) => (num) => {
        const pow = Math.pow(base, toFixTo);
        return +(Math.round(num * pow) / pow);
};
// the error occurs when number is between 553.17 and 553.21 
const number = 553.2;
console.log(
  "raw number " + number,
  "rounded number " + toFixedNumber(2)(number),
  "rounded number * 100 " + toFixedNumber(2)(number) * 100,
  "raw number * 100 " + number * 100
);
/*
  Output:
  raw number 553.2 
  rounded number 553.2 
  rounded number * 100 55320.00000000001 
  raw number * 100 55320.00000000001
*/

有没有人遇到过同样的问题?知道它可能来自哪里吗?尽管如此,这似乎是一个非常严重的问题

标签: javascriptnode.jsfirefoxwebkitv8

解决方案


推荐阅读