• 为什么 0.1+0.2 不等于 0.3


    为什么 0.1+0.2 不等于 0.3
    在 JavaScript 中,0.1 + 0.2 的结果不等于 0.3,这是因为在 JavaScript 中采用的是双精度浮点数格式(64 位),而在这种格式下无法精确表示某些小数,因此在进行计算时会出现精度误差。

    具体来说,0.1 和 0.2 都是无限循环小数,无法用二进制精确地表示。在 JavaScript 中,这些小数会被转换成最接近它们的可表示值,然后再进行计算。因此,0.1 和 0.2 被转换成的值可能会存在精度误差,导致它们的和不等于 0.3。

    下面的代码演示了这个问题:

    console.log(0.1 + 0.2);   // 0.30000000000000004
    console.log(0.1 + 0.2 === 0.3);   // false
    
    • 1
    • 2

    为了避免这个问题,通常可以采用以下两种方法:

    1. 将小数转换成整数,进行计算后再转换回小数。例如,可以将小数乘以 10 的几次方,将它们变成整数,进行计算后再除以相应的倍数,转换回小数。
    console.log((0.1 * 10 + 0.2 * 10) / 10);   // 0.3
    
    • 1
    1. 使用第三方库,例如 Decimal.js、big.js 等,这些库提供了更高精度的计算方法,可以避免浮点数计算时的精度误差。
    // 使用 Decimal.js 进行计算
    const Decimal = require('decimal.js');
    console.log(new Decimal('0.1').plus('0.2').equals('0.3'));   // true
    
    • 1
    • 2
    • 3
  • 相关阅读:
    笨办法学python3
    卷积神经网络中的自适应加权池化
    linux安装kafka
    14 shell编程入门-hello world
    爬虫之xpath插件下载与安装
    spring boot零配置
    圆锥曲线的分类
    一个用于在虚拟桌面下跑chrome的docker镜像
    Vue3+vite路由配置优化(自动化导入)
    【SLAM】5相机&图像
  • 原文地址:https://blog.csdn.net/weixin_44309299/article/details/133357179