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.xdnf.cn/news/1556360.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

showdoc二次开发

showdoc用的vue版本老,需要安装老版本nodejs,比如node 14.21.3 win32-x64-93_binding.node问题 https://github.com/sass/node-sass/releases 下载 web_src\node_modules\node-sass\vendor\win32-x64-93 下面重命名为binding.node 代理到php后端&…

2-114 基于matlab的CA模型

基于matlab的CA模型,Singer模型对单机动目标进行跟踪算法,具有10页实验文档。采用蒙特卡罗方法对一个二坐标雷达对一平面上运动的目标进行观测,得到跟踪滤波结果。程序已调通,可直接运行。 下载源程序请点链接:2-114 …

Crypto虐狗记---”你“和小鱼(八)

前言:剧情八 提示: 下载: 只给了公钥 那么可以用RsaCtfTool去分离公钥---》 得到(e,n): 如何安装参考: kail下安装RsaCtfTool - 九皋777 - 博客园 (cnblogs.com) 已知n,那么去得到p q 或者使…

OBOO鸥柏丨深圳科学展馆引入液晶拼接屏中控宣传协议互动大屏

科技馆的展厅展区,宛如一扇通往未来世界的璀璨窗口,巧妙融合了OBOO鸥柏LCD液晶拼接屏的尖端显示技术,液晶拼接墙与沉浸式体感交互的梦幻体验交织成一幅幅生动的科技画卷。这里,中控协议的精准对接,如同智慧之网的织就者…

whisper 实现语音识别 ASR - python 实现

语音识别(Speech Recognition),同时称为自动语音识别(英语:Automatic Speech Recognition, ASR),将语音音频转换为文字的技术。 whisper是一个通用的语音识别模型,由OpenAI公司开发。…

家具城管理平台———未来之窗行业应用跨平台架构

一、家具城商城管理数字化 家具城商城电子化管理优势显著。能实时精确掌控库存,及时补货并降低积压。通过销售数据的精准分析,把握市场需求,优化采购与营销。提升客户服务,记录购买历史以提供个性化体验。简化采购,自动…

leetcode 力扣算法题 快慢指针 双指针 19.删除链表的倒数第n个结点

删除链表的倒数第N个结点 题目要求题目示例解题思路从题目中的已知出发思考寻找目标结点条件转换核心思路 需要注意的点改进建议 完整代码提交结果 题目要求 给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。 题目示例 示例 1&#xff1…

微信小程序和抖音小程序的分享和广告接入代码

开发完成小程序或者小游戏之后,我们为什么要接入分享和广告视频功能,主要原因有以下几个方面。 微信小程序和抖音小程序接入分享和广告功能主要基于以下几个原因: 用户获取与增长:分享功能可以帮助用户将小程序内容传播给更多人&…

Crypto虐狗记---”你“和小鱼(外传)

前言:剧情十(我没看见还有一个。。。。) 提示: 下载: 参数有了,直接搞就行。。。 参考: *crypto*练2--攻防世界--easy_ECC - kubopiy - 博客园 (cnblogs.com) 大佬的脚本: 攻防世界 easy_ECC - diakla -…

鸿蒙next开发第一课03.ArkTs语法介绍-案例

前面已经学习了ArkTs的基本语法和DevEcoStudio的基本操作,接下来按照官方提示开发一个基本案例。 该案例是系统自带的demo,下载下来源代码后可以直接运行。 接下来我来演示如何运行demo。我在demo中加入了自己的注释。 切记:文件夹不能有中…

遥感滑坡目标检测数据集 2300张 滑坡 带标注 voc yolo 1类

遥感滑坡目标检测数据集 2300张 滑坡 带标注 voc yolo 1类 分类名: (图片张数, 标注个数) landsI ide: (2299,6545) 总数: (2314, 6545) 总类(nc): 1类 遥感滑坡目标检测数据集 (Remote Sensing Landslide Detection Dataset) 数据集概述 该…

深入了解Python:那些常被忽略的知识点

作为现代编程语言的典范,Python以其简洁、高效和广泛的应用领域赢得了无数开发者的青睐。然而,即使是经验丰富的Python程序员,也可能不了解Python的一些特性或最佳实践。这篇文章将介绍Python中常被忽略的一些知识点,通过全面的分…

C++入门(引用篇)

在C编程的广阔天地中,引用是一种强大且独特的工具,它允许程序员为已存在的变量创建别名,通过这个别名可以直接访问和操作原始变量。引用的这一特性不仅简化了代码,提高了代码的可读性,还带来了性能上的优势。接下来&am…

推理攻击-Python案例

1、本文通过推理攻击的方式来估计训练集中每个类别的样本数量、某样本是否在训练集中。 2、一种简单的实现方法:用模型对训练数据标签进行拟合,拟合结果即推理为训练集中的情况。 3、了解这些案例可以帮助我们更好的保护数据隐私。 推理攻击(…

【Conda】Conda命令详解:高效更新与环境管理指南

目录 1. Conda 更新命令1.1 更新 Conda 核心1.2 更新所有包 2. 严格频道优先级3. 强制安装特定版本4. 创建与管理环境4.1 创建新环境4.2 激活和停用环境4.3 导出和导入环境4.4 删除环境 5. 清理缓存总结 Conda 是一个强大的包管理和环境管理工具,广泛应用于数据科学…

.net8系列-07图文并茂手把手教你连接SqlServer数据库使用log4net记录.net日志

文章目录 前情提要步骤概览 下载依赖下载安装成功 数据库准备脚本准备执行脚本,创建所需数据库创建成功,查看日志表 准备代码初始代码配置数据库开启数据库写入日志逻辑开启日志 运行测试删除之前的编译文件重新编译运行测试本地日志测试成功数据库日志测…

【英语】2. 英语的表达习惯

文章目录 前言less v. more n.解释e.g. less v. more prep.被动与中文的歧义总结参考文献 前言 进行英语前后缀的复习 less v. more n. 解释 外国的表达方式:更多地偏向静态,因此更多地使用名词 e.g. (rather Chinglish expression) She could not c…

使用 docker-compose 启动 es 集群 + kibana

编写 docker-compose yaml version: v3 services:elasticsearch-node1:image: elasticsearch:7.17.24container_name: elasticsearch-node1ports:- "9200:9200"- "9300:9300"environment:- node.nameelasticsearch-node1- cluster.namemy-es-cluster- dis…

云计算身份认证与访问控制(Cloud Computing Identity Authentication and Access Control)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

PyEcharts教程(002):上手PyEcharts

2、上手PyEcharts(以jupyter notebook编译) 2.1 如何查看pyecharts版本 import pyecharts print(pyecharts.__version__)2.2 上手Pyecharts 首先绘制第一个图表 from pyecharts.charts import Bar # 创建柱形图对象 bar Bar() # 添加x轴 bar.add_xa…