1.记得大学第一次学习计算机课,就接触了进制转换;例如,二进制转十进制,十进制转二进制等;例如对于十进制的整数,进行转二进制是没有什么问题的;但是对小数可能进制转换就会出现精读丢失的问题.

在 JavaScript 中所有数值都以 IEEE-754 标准的 64bit 双精度浮点数进行存储的。先来了解下 IEEE-754 标准下的双精度浮点数。

IEEE-754 标准下双精度浮点数由三部分组成,分别如下:

  • sign(符号): 占 1 bit,表示正负。

  • exponent(指数): 占 11 bit,表示范围。

  • mantissa(尾数): 占 52 bit,表示精度,多出的末尾如果是 1 需要进位。

JavaScript 的最大安全数是如何来的.

最大的安全数为 Math.pow(2,53)-1,即 9007199254740991

业务中碰到的精度问题以及解决方案

之前遇到后端的同事传递了long类型的订单号码过来,其中有写订单号码到了前端(会转为Number)显示和后端传递过来的不一致,才知道了有精读丢失的问题;

解决方案大致有以下几种:

  1. 针对大数的整数可以考虑使用 bigint 类型(目前在 stage 3 阶段)。

  2. 使用 bigNumber,它的思想是转化成 string 进行处理,这种方式对性能有一定影响。

  3. 可以考虑使用 long.js,它的思想是将 long 类型的值转化成两个 32 位的双精度类型的值。

暂时记录,后续完善

初探js中的精读问题相关推荐

  1. 在js中使用HashMap数据结构,在js中使用K,V数据结构

    首先是定义一个HashMap方法,做基类(复制在js中即可,然后引用) //简单的哈希表,begin function HashMap() {/** Map 大小 * */var size = 0;/ ...

  2. [JavaScript] 探索JS中的函数秘密

    函数长啥样? 把一些要重复使用的内容封装到函数内. function foo(title) {console.log(title) } foo('title') foo('dust') foo('he ...

  3. 在node.js中,使用基于ORM架构的Sequelize,操作mysql数据库之增删改查

    Sequelize是一个基于promise的关系型数据库ORM框架,这个库完全采用JavaScript开发并且能够用在Node.JS环境中,易于使用,支持多SQL方言(dialect),.它当前支持M ...

  4. 在JS中最常看到切最容易迷惑的语法(转)

    发现一篇JS中比较容易迷惑的语法的解释,挺有用的,转载下,与大家分享: js中大括号有四种语义作用 语义1,组织复合语句,这是最常见的 Js代码  if( condition ) { //... }e ...

  5. js去el的map_转:el表达式获取map对象的内容 js中使用el表达式 js 中使用jstl 实现 session.removeattribute...

    原文链接: 总结: el表达式获取map对象的内容 后端: HashMap map1 = new HashMap(); map1.put("key1","lzsb&quo ...

  6. js中substr,substring,indexOf,lastIndexOf的用法

    js中substr,substring,indexOf,lastIndexOf等的用法 1.substr substr(start,length)表示从start位置开始,截取length长度的字符串 ...

  7. js中的各种宽高以及位置总结

    在javascript中操作dom节点让其运动的时候,常常会涉及到各种宽高以及位置坐标等概念,如果不能很好地理解这些属性所代表的意义,就不能理解js的运动原理,同时,由于这些属性概念较多,加上浏览器之 ...

  8. WKWebView Safari调试、JS互调、加载进度条、JS中alert、confirm、prompt

    主要内容 Safari调试 swift/OC与JS互调 增加加载进度条 支持JS中alert.confirm.prompt Safari调试 设置 -> safari --> 高级,开启J ...

  9. 彻底理解js中this

    相关博文:http://blog.csdn.net/libin_1/article/details/49996815 彻底理解js中this的指向,不必硬背. 首先必须要说的是,this的指向在函数定 ...

最新文章

  1. AWS无服务开发Lambda系列之本地上传包至Lambda
  2. hue sqoop mysql_HUE中Oozie执行Sqoop
  3. STL中list的使用(理论)
  4. 手游server之数据IO进化
  5. javascript 类型及类型判断
  6. Sphinx安装与基本设置
  7. caffe+GAN︱PPGN生成模型5则官方案例(caffe版)
  8. arc和非arc完美支持
  9. 平面设计ai教程笔记
  10. LimeSDR新手入门教程(一)
  11. 清除计算机用户缓存,如何清除电脑的内存缓存?
  12. emc re 整改 超标_EMC测试及整改对策.ppt
  13. 边缘计算(Edge computing) 简单介绍
  14. 【定位原理揭秘第三期】室内定位技术原理揭秘
  15. OpenCV 画箭头 python
  16. Set 直接转成 数组
  17. 正则表达式(正负数,保留两位小数)
  18. linux定时释放内存,定时释放Linux 内存 带释放记录
  19. OC与swift相互调用
  20. 无卡支付时代 银行信用卡联手京东金融欲打翻身仗

热门文章

  1. 5 年经验年薪百万,一位阿里 P8 分享自己的成长干货
  2. outlook邮箱怎么配置服务器地址多少,Outlook如何设置?Outlook设置方法
  3. detectron2更新Pytorch版本后的报错记录
  4. 结构化编程(SP,structured programming)
  5. spring boot流浪动物救助系统 毕业设计-附源码180920
  6. Android12指纹框架完全解析(一)
  7. 什么是好的用户体验?
  8. 时尚的免费杀毒软件Avast!超酷登场(提供下载)-1
  9. 画直方图和函数密度曲线的几种方法
  10. 效率高到爆炸的IT运维软件您安装了吗?