JavaScript 加减运算精度损失问题解决

两小数相加,解决JS两数相加的精度问题 两小数相加,解决JS两数相加的精度问题 前言 加入博客3年,第一次写文章,实在对自己有点无语!但对于前端的学习自己还是个初学者,希望能坚持,加油学习。话不多说,开始第一次。 JS中小数相加存在的精度问题 首先来看一段示例: console.log(0.1+0.2);//0.30000000000000004 console.log(0.2+0.7);//0.8999999999999999 JS中两数小数相加产生精度问题的原因: 1、js中的数字类型只有number类型,不区分浮点型和整形,直接以浮点型d 阅读详情

注:纯手打,如有错误欢迎评论区交流!
转载请注明出处:https://blog.youkuaiyun.com/testleaf/article/details/148157659
编写此文是为了更好地学习前端知识,如果损害了有关人的利益,请联系删除!
本文章将不定时更新,敬请期待!!!
欢迎点赞、收藏、转发、关注,多谢!!!

一、JavaScript 加减运算精度损失的原因

JavaScript 在进行加减运算时可能会出现精度损失的问题,这主要是由于以下几个原因:

1、IEEE 754 浮点数标准

JavaScript 使用 IEEE 754 双精度浮点数(64位)来表示所有数字:

  • 1位符号位
  • 11位指数位
  • 52位小数位(有效数字)

这种表示方式导致:

  • 只能精确表示有限范围内的整数(±2⁵³-1)
  • 小数部分可能无法精确表示(如0.1)

2、十进制转二进制精度损失

许多简单的十进制小数在二进制中是无限循环的:

  • 0.1(十进制) → 0.000110011001100…(二进制)
  • 0.2(十进制) → 0.00110011001100…(二进制)

当这些数字相加时:

0.1 + 0.2 // 结果是0.30000000000000004而不是0.3

3、运算过程中的精度累积

连续运算会累积精度误差:

0.1 +
JavaScript中浮点数计算精度丢失的问题 浮点数在计算机中表示,总长度是64位,其中最高位是符号位,后面的11位是指数位,最后的52位是小数位,也就是有效数字部分。这里给一个解决方案:将浮点数乘以一定数值转为整数,通过整数来进行运算,然后将结果除以相同数值转为浮点数后,再返回。因为浮点数使用64位存储时,最多只能存储52位,那对于一些存在无限循环的小数位浮点数,就只会截取52位,这就导致精度丢失。对于一个整数来说,很轻松就转换为十进制或者是二进制,而对浮点数来说,因为存在小数点,小数点的位置是不固定的。 阅读详情

相关推荐

IEDA激活码失效?教你5分钟快速续期的方法

本文针对IEDA激活码失效问题,提供了一套从快速应急到深度排查的完整解决方案。文章不仅详解了5分钟快速续期与清理缓存等应急方法,更深入剖析了授权机制、离线激活流程,并指导如何构建可持续的授权管理策略,帮助开发者彻底解决激活困扰,确保开发环境稳定。

a0b1c2d3的专栏 273

WRF中使用ERA5再分析数据

   本人在做一些实例时,需要用到最新的ERA5再分析数据集,其中我下载的是ERA5 hourly data on pressure levels form 1979 to present和ERA5 hourly data on single levels from 1979 to present中的3天数据。 1、注册climate copernicus账号 下载ERA5数据前先要注册其账号 2、选择变量    WRF中对于气象数据的字段有具体的要求, ......

GIS 8168

基于32nm CMOS工艺的传输门D触发器设计及HSPICE仿真分析

根据半导体集成电路、利用Hspice软件以及数字电路等课程的知识,使用集成电路CMOS工艺完成触发器的设计,帮助初学者熟悉和掌握集成电路芯片电路设计及模拟方法和技巧

2302_81301620的博客 2452

iOS面试题大全(附带答案)

C语言相关面试题 1.static有什么用途? 答案:在C语言中,static主要定义全局静态变量,定义局部静态变量,定义静态函数。 static 属于静态变量,使用它修饰的变量生命周期是整个源程序。 @1.在函数体内的 static 变量的作用范围为该函数体,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; @2.在模块内的 static 全局变量可以被模块内所有函数访问,但不能被模块外其它函数访问; @3.在模块内的 static 函数只被这一模块内的其它函数调用,这个函数的使用范围被限

IOSNF的博客 2424

[3D检测系列-PV-RCNN] PV-RCNN实战指南:从论文解析到代码调试全流程

本文提供了PV-RCNN在3D目标检测领域的实战全流程指南。文章深入解析了其Point-Voxel融合的核心思想,并详细演示了从环境搭建、数据准备、代码复现到模型训练与调试的具体步骤,特别针对常见的报错问题给出了解决方案,帮助开发者高效掌握这一经典算法。

weixin_29189381的博客 480

kettle9.0+ 连接Hadoop报错

kettle bug

x²+(y-√³x²)²=1的博客 1559

IBM V3700更换控制器2(503错误)

正常的node1 ,机器代码版本:7.5.0.3, 机器代码构建:115.51.1509171734000。耐心等待后,刷新,看到node2,状态变成 节点状态:服务,错误:656,版本和node1一样了。新换的node2 ,机器代码版本:7.2.0.5, 机器代码构建:87.8.1404221000。耐心等待,刷新,node2,状态看到了,节点状态:活动,错误 724 1 1 0。拔出故障的控制,把内存和HBA卡,电池换到新的控制器。新的控制还是报错无法使用,节点状态:服务 错误:503。

klyshao的博客 4446

ESP32-S3模组上跑通esp32-camera(32)

ESP32-S3模组上跑通esp32-camera(32)

phmatthaus的专栏 770

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: Vue3知识点梳理
下一篇: TypeScript知识点梳理
testleaf
博客等级 码龄7年 3514粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

testleaf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值