JavaScript数字精度丢失问题解决方案

ops/2024/10/9 2:54:15/

JavaScript数字精度丢失问题

JavaScript使用64位浮点数表示数字(基于IEEE 754标准),这导致某些十进制数字在计算过程中出现精度丢失。常见的场景包括小数运算,如 0.1 + 0.2 的结果并非精确的 0.3,而是 0.30000000000000004

解决方法

  1. 使用toFixed()toPrecision():对计算结果四舍五入,但这仅适用于显示层面。

    javascript">let result = (0.1 + 0.2).toFixed(2); // "0.30"
    
  2. 将数字转换为整数再计算:将小数放大为整数,运算后再缩小。

    javascript">let result = (0.1 * 10 + 0.2 * 10) / 10; // 0.3
    
  3. 使用Big.js、Decimal.js等库:处理精度问题,专门解决浮点数运算的库。

    javascript">const Decimal = require('decimal.js');
    let result = new Decimal(0.1).plus(0.2).toNumber(); // 0.3
    

案例

javascript">console.log(0.1 + 0.2); // 输出:0.30000000000000004
console.log((0.1 * 10 + 0.2 * 10) / 10); // 输出:0.3

使用库:

javascript">const Decimal = require('decimal.js');
let result = new Decimal(0.1).plus(0.2).toNumber(); // 输出:0.3

http://www.ppmy.cn/ops/122948.html

相关文章

【EXCEL数据处理】000010 案列 EXCEL文本型和常规型转换。使用的软件是微软的Excel操作的。处理数据的目的是让数据更直观的显示出来,方便查看。

前言:哈喽,大家好,今天给大家分享一篇文章!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 【EXCEL数据处理】000010 案列 EXCEL单元格格式。EXCEL文本型和常规型转…

SpringBoot教程(三十一) | SpringBoot生成Docker镜像包

SpringBoot教程(三十) | SpringBoot生成Docker镜像包 前提方式一:spring-boot-maven-plugin 方式方式二:Dockfile 方式(推荐) 前提 如果你在 Windows 上,确保 Docker Desktop 已经启动并正在运…

python创建虚拟环境

Python 虚拟环境 venv python -V python -m venv .venv_ai (虚拟环境目录名) 使用虚拟环境 cd .venv_ai/Scripts activate 安装第三方模块 (.venv_ai) D:.venv_ai\Scripts> pip install numpy pandas matplotlib jupyter opencv-python -i https:// m…

Day47【最小生成树】

题目链接们 色 首先不难发现答案一定是某条边的权值,且该边两个端点的颜色不同。 类似于 CSP2022S-星战 的思路,我们把 m m m 条边先排序,再分为 m \sqrt m m ​ 个块,并定义边 i i i 的 Hash 权值为 ( c o l u − c o l v…

OJ在线评测系统 后端微服务架构 注册中心 Nacos入门到启动

注册中心 服务架构中的注册中心是一个关键组件,用于管理和协助微服务之间的通信。注册中心的主要职责是服务的注册和发现,确保各个微服务能够相互找到并进行调用。 主要功能: 服务注册:微服务在启动时,将自身信息&am…

Authentication Lab | Timing Attacks

关注这个靶场的其它相关笔记:Authentication Lab —— 靶场笔记合集-CSDN博客 0x01:Timing Attacks 前情提要 由于软件系统对不同输入处理时间的差异,可能会导致系统存在侧信道攻击的隐患。比如,如果输入的是无效的用户名&#x…

Windows系统编程(三)线程并发

进程与线程 进程:直观的说就是任务管理器中各种正在运行的程序。对于操作系统来说,进程仅仅是一个数据结构,并不会真实的执行代码 线程:通常被称作但并不真的是轻量级进程或实际工作中的进程,它会真实的执行代码。每…

JavaScript函数基础(通俗易懂篇)

10.函数 10.1 函数的基础知识 为什么会有函数? 在写代码的时候,有一些常用的代码需要书写很多次,如果直接复制粘贴的话,会造成大量的代码冗余; 函数可以封装一段重复的javascript代码,它只需要声明一次&a…