当前位置: 首页 > news >正文

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

JavaScript数字精度丢失问题

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

解决方法

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

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

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

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

案例

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

使用库:

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

http://www.mrgr.cn/news/44066.html

相关文章:

  • Vue入门-指令学习-v-show和v-if
  • 用户在网页上输入一个网址,它整个页面响应的流程是什么?
  • DBMS-3.2 SQL(2)——DML的SELECT(含WHERE、聚集函数、GROUP BY、HAVING之间的关系)
  • 子词级别分词器(BPE)在IMDB数据集上训练情感分析模型
  • 【2024】前端学习笔记14-JavaScript常用数据类型-变量常量
  • 基于阻塞队列及环形队列的生产消费模型
  • c++进阶篇——初窥多线程(五) 条件变量与信号量
  • 华为最新业绩出炉!上半年营收4175亿元,同比增长34%!
  • c++剪枝
  • 业务封装与映射 -- OTUk/ODUk/OPUk比特速率和容量
  • 精准选择大模型:消费品行业的营销与体验创新之路
  • C++新特性汇总
  • Docker:安装 MongoDB 的详细指南
  • ROS中显示标记教程
  • Vue-快速入门
  • pillow常用知识
  • JavaScript进行数据可视化:D3.js入门
  • 视频转文字免费的软件有哪些?6款工具一键把视频转成文字!又快又方便!
  • MySql数据引擎InnoDB引起的锁问题
  • 什么是 Koa?