前端BUG录- 科学记数法是什么?

简介: 科学记数法是一种记数的方法。 特性:精度丢失、节省空间

什么是科学计数法



把一个数表示成a与10的n次幂相乘的形式(1≤|a|<10,a不为分数形式,n为整数)。19971400000000 == 1.99714×10^13 == 1.99714e13


当我们要标记或运算某个较大或较小且位数较多时,用科学记数法免去浪费很多空间和时间。


问题起源



在一个群里,有个人问我:保留小数问题。经过一番排查是他没有处理科学计数法。


bVcH1mo.webp.jpg


JavaScript 能够准确表示的整数范围在 -2^532^53 之间(不含两个端点),超过这个范围,无法精确表示这个整数。


同样,因为存储规范的原因,小数也存在精度问题。


https://www.ecma-international.org/ecma-262/#sec-ecmascript-language-types-number-type

JavaScript 的 Number


JavaScript 的 Number 对象是经过封装的能让你处理数字值的对象。Number 对象由 Number() 构造器创建。

JavaScript 的 Number 类型为双精度IEEE 754 64位浮点类型。

最近出了 BigInt 任意精度数字类型,已经可以尝鲜了

安全数


  • Number.MAX_SAFE_INTEGER JavaScript 中最大的安全整数 (2**53 - 1)。


bVcH1r1.webp.jpg


  • Number.MAX_VALUE JavaScript 中能表示的最大正数。最小的负数是 -MAX_VALUE。


bVcH1sW.webp.jpg


  • Number.MIN_SAFE_INTEGER JavaScript 中能表示的最小的安全整数 (-(253 - 1))。


bVcH1ta.webp.jpg


  • Number.MIN_VALUE JavaScript 中能表示的最小正数即最接近 0 的正数 (实际上不会变成 0)。最大的负数是 -MIN_VALUE


bVcH1t1.webp.jpg


代码



function number2string(num){
    num = String(num)
    var eSplit = num.split('e')
    var e = +(eSplit[1] || 0)
    var pad = '0'.repeat(500)
    var numSplit = eSplit[0].split('.')
    var str
    var numSplit1 = numSplit[1] || ''
    if(e < 0){
        str = ('0.' + (pad + numSplit[0]).slice(e) + numSplit1)
    }else{
        str = (numSplit[0] + (numSplit1 + pad).slice(0,e) + '.' + numSplit1.slice(e))
    }
    return str.replace(/\.?0*$/,'').replace(/^0*/,'').replace(/^\./,'0.') || '0'
}
// number2string('1.23456789e-1')
// number2string('1.23456789e0')
// number2string('1.23456789e1')
arr = [];
for(var i = -20; i < 20; i++){
    arr.push(`1.23456789e${i}`)
    //arr.push(`0001.23456789000e${i}`)
    //arr.push(`00000.0000001e${i}`)
     //arr.push(`${i}`)
    //arr.push(`${.5 - Math.random()}`)
}
arr.forEach((v)=>{
    console.log(String(v).padEnd(30, ' '), number2string(v))
})


目录
打赏
0
0
0
0
2
分享
相关文章
你发现一个bug,如何定位这个是前端还是后端缺陷?建议收藏
你发现一个bug,如何定位这个是前端还是后端缺陷?建议收藏
544 0
测试大姐趁我下班点又提了个bug!前端你咋多个options请求?
测试大姐趁我下班点又提了个bug!前端你咋多个options请求?
101 0
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
123 75
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
前端开发的终极技巧:如何让你的代码既简洁又高效,还能减少bug?
【10月更文挑战第30天】前端开发充满挑战与创新,如何编写简洁高效且少bug的代码是开发者关注的重点。本文介绍五大技巧:1. 模块化,提高代码复用性;2. 组件化,降低代码耦合度;3. 使用现代框架,提高开发效率;4. 统一代码规范,降低沟通成本;5. 利用工具,优化代码质量。掌握这些技巧,让前端开发更高效。
191 1
如何区分是前端BUG还是后端BUG
1 基于经验 前端BUG特点: (1)界面排版、布局错误、兼容性问题 (2)网络不稳定导致JS或CSS未完全加载或请求超时(一般不需要提BUG),正常网络下加载超时 后端BUG特点: 业务逻辑、性能问题、数据问题、安全性问题 2 通过HTTP请求和响应信息 可以通过浏览器开发者工具(F12)、postman、fiddler(移动端可通过该工具抓包)、Charles、Proxyman、Wireshark、HttpCanary、tcpdump等工具。
119 1
前端 JS 经典:打印对象的 bug
前端 JS 经典:打印对象的 bug
56 0
怎么判断bug是前端问题还是后端问题?
怎么判断bug是前端问题还是后端问题?
179 0
|
10月前
|
elementui-upload组件自定义样式上传(upload中常用的属性,但是网络上却找不到教程)(解决bug删除之后再次上传会上传删除的图片)专注后端工程师的前端速成
elementui-upload组件自定义样式上传(upload中常用的属性,但是网络上却找不到教程)(解决bug删除之后再次上传会上传删除的图片)专注后端工程师的前端速成
993 0
编写代码前,如何规避尽可能多的前端bug?
编写代码前,如何规避尽可能多的前端bug?
93 0

热门文章

最新文章

  • 1
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    16
  • 2
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    8
  • 3
    从前端视角聊聊通义灵码使用经验,如何更好地提升研发效率
    142
  • 4
    详解智能编码在前端研发的创新应用
    6
  • 5
    巧用通义灵码,提升前端研发效率
    17
  • 6
    智能编码在前端研发的创新应用
    11
  • 7
    VSCode AI提效工具,通义灵码前端开发体验
    15
  • 8
    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
    11
  • 9
    课程预告|前端开发者如何用好通义灵码,这份实战指南请查收
    82
  • 10
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    3
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等