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

运动品牌网站开发题目来源做任务有q币的网站

运动品牌网站开发题目来源,做任务有q币的网站,广西住房建设厅网站首页,现在做网站还有用吗1.js精度丢失的常见问题,从常见的浮点型进行计算#xff0c;到位数很长的munber类型进行计算都会造成精度丢失的问题#xff0c; 首先我们看一个问题#xff1a; 0.1 0.2 ! 0.3 // truelet a 9007199254740992 a 1 a // true那么js为什么会出现精度丢失的问题…1.js精度丢失的常见问题,从常见的浮点型进行计算到位数很长的munber类型进行计算都会造成精度丢失的问题 首先我们看一个问题 0.1 0.2 ! 0.3 // truelet a 9007199254740992 a 1 a // true那么js为什么会出现精度丢失的问题 计算机的二进制实现和位数限制有些数无法有限表示。就像一些无理数不能有限表示如 圆周率 3.1415926…1.3333… 等。JS 遵循 IEEE 754 规范采用双精度存储double precision占用 64 bit 比如 0.1 0.0001 1001 1001 1001…1001无限循环 0.2 0.0011 0011 0011 0011…0011无限循环 此时只能模仿十进制进行四舍五入了但是二进制只有 0 和 1 两个于是变为 0 舍 1 入。这即是计算机中部分浮点数运算时出现误差丢失精度的根本原因。 大整数的精度丢失和浮点数本质上是一样的尾数位最大是52位因此 JS 中能精准表示的最大整数是 Math.pow(2, 53)十进制即 9007199254740992。 大于 9007199254740992 的可能会丢失精度 9007199254740992 10000000000000…000 // 共计 53 个 0 9007199254740992 1 10000000000000…001 // 中间 52 个 0 9007199254740992 2 10000000000000…010 // 中间 51 个 0 当你做如下计算的时候 9007199254740992 1 // 丢失 9007199254740992 2 // 未丢失 9007199254740992 3 // 丢失 9007199254740992 4 // 未丢失 对于整数前端出现问题的几率可能比较低毕竟很少有业务需要需要用到超大整数只要运算结果不超过 Math.pow(2, 53) 就不会丢失精度。 对于小数前端出现问题的几率还是很多的尤其在一些电商网站涉及到金额等数据。解决方式把小数放到位整数乘倍数再缩小回原来倍数除倍数 // 0.1 0.2 (0.110 0.210) / 10 0.3 // true 对于过大的数字 可以用bigint应为number的基本类型不能超过2^53不然就会出现精度丢失为了解决这个限制在ECMAScript标准中出现了BigInt。 BigInt可以表示任意大的整数 但是要注意写法 let result124569875984123677888999; //估摸着这一步就在前端已经精度丢失了 String(BigInt(result))let resultBigInt(124569875984123677888999); //这里也已经精度丢失了 String(result) // 上面两种都是错误的写法// 正确写法 let result124569875984123677888999n; String(result);除了以上方式还可以借助第三方库 BigNumber.js提供了超高精度的数字处理能力可以解决精度丢失问题。 decimal.js提供了类似于 Python Decimal 的类型可以精确表示浮点数解决精度丢失问题。 npm install bignumber.js --savelet x new BigNumber(123.4567); let y BigNumber(123456.7e-3); let z new BigNumber(x); x.isEqualTo(y) y.isEqualTo(z) x.isEqualTo(z); // truelet x new BigNumber(1111222233334444555566); x.toString(); // 1.111222233334444555566e21 x.toFixed(); // 1111222233334444555566// Precision loss from using numeric literals with more than 15 significant digits. new BigNumber(1.0000000000000001) // 1 new BigNumber(88259496234518.57) // 88259496234518.56 new BigNumber(99999999999999999999) // 100000000000000000000// Precision loss from using numeric literals outside the range of Number values. new BigNumber(2e308) // Infinity new BigNumber(1e-324) // 0// Precision loss from the unexpected result of arithmetic with Number values. new BigNumber(0.7 0.1) // 0.7999999999999999npm install --save decimal.jsconst a 9.99;const b 8.03;// 加法let c new Decimal(a).add(new Decimal(b)) // 减法let d new Decimal(a).sub(new Decimal(b))// 乘法let e new Decimal(a).mul(new Decimal(b))// 除法let f new Decimal(a).div(new Decimal(b))
http://www.dnsts.com.cn/news/222547.html

相关文章:

  • 厦门网站建设_福建网站建设哪家专业
  • 网站建设网点深圳物流公司排名前十
  • 三网合一网站建设东莞关键词seo
  • 网站建设 网站设计华为 wordpress
  • 网站设计规划高中信息技术且网站制作
  • 北京市建设工程发包承包交易中心网站云南省建设厅网站职称评审
  • 广州骏域网站建设专家手机电脑版c2c网站架构
  • 温州专业做网站网站开发中可能遇到的技术问题
  • 网站建设软文网站设计文档
  • wordpress网站速度慢ip直接访问网站 备案
  • 宜州做网站旅游网站的建设背景
  • 让自己的电脑做网站的服务器福田庆三整过的明星
  • 高端+旅游+网站建设网站开发的技术解决方案
  • 让别人做网站推广需要多少钱做网站一般什么价格
  • 网站加入wordpresswap网站制作视频教程
  • 网博士智能建站成都龙泉工程建设有限公司网站
  • 浙江中联建设集团有限公司网站网站建设费归入长期待摊费用
  • 做图文网站要什么配置的服务器WordPress文章分享图
  • word做网站连接网站模板图片
  • 重庆建网站公司网站域名注册需要什么手续
  • 上海企业网站推广杭州比较好的网站建设公司
  • 仿网链网站源代码下载怎么搜索网站
  • 深圳网站建设lxhd韩国热搜榜
  • 杭州做公司网站的公司国外试用网站空间
  • 湛江网站设计模板视频店面设计怎么样
  • 标准网站有哪些常州经开区建设局网站
  • 网站用什么颜色外贸网站使用什么品牌国外主机
  • 天津做网站公司哪家好wordpress 花瓣模板
  • 上海建设银行网站莘庄免费开网站
  • 在哪个网站做流动补胎的广告好万能素材网站下载