Numer类型最大值/最小值

js中数值类型的个最大值(安全值)为9,007,199,254,740,991,是2的53次方-1。在10进制表示下有16位。

Number.MAX_SAFE_INTEGER
//输出:9007199254740991
Number.MIN_SAFE_INTEGER
//输出:-9007199254740991

精度丢失

如果后端给前端的数值类型数据,超过了16位就会出现精度丢失

精度丢失的问题,可以用js中提供的JOSN.parse()或者parseInt()来进行验证。

比如,可在浏览器控制台执行如下JSON.parse()语句,来验证一下精度丢失的问题。

JSON.parse('{"id":123,"tid":5410045912865979252}');
//输出:{id: 123, tid: 5410045912865979000} 精度丢失JSON.parse('{"id":123,"tid":541004591286597925}');
//输出:{id: 123, tid: 541004591286597950} 精度丢失JSON.parse('{"id":123,"tid":54100459128659792}');
//输出:{id: 123, tid: 54100459128659790} 精度丢失

控制在16位的安全值以内,精度就不会丢失。

JSON.parse('{"id":123,"tid":5410045912865979}');
//输出:{id: 123, tid: 5410045912865979} 精度未丢失

解决办法

首先声明一点,后端应该避免将这么大的数值类型给到前端

如果实在无法避免,就让后端给前端返回数据的时候,额外增加一个String类型的字段,即通过String类型来向前端传递这种大整数。

//thirdId是18位的大整数
public class Entity {@json("id") public long id;@json("tid") @dbmap(isIndex=true)public long thirdId;@json("tsid") @dbmap(isMap=false)public String thirdStrId;//大整数在前端JSON化的时候精度丢失,转成String返回之
}
//其中thirdStrId=String.valueOf(thirdId)

js中Numer类型最大值9007199254740991,精度丢失问题解决相关推荐

  1. 后端 Long类型,超过 js 的number类型最大值的解决办法

    先看问题: 数据库 id 为 Bigint 类型: 通过后端逻辑取值返回给前端: JS 的number类型有个最大值(安全值).即2的53次方,为9007199254740992(16位).如果超过这 ...

  2. String转double类型会造成精度丢失

    ** String转double类型会造成精度丢失 ** String num=9.78:System.out.println( Double.parseDouble(num)*100); 理论上的结 ...

  3. js中字符串类型转化toString、parseInt、parseFloat、Number

    全栈工程师开发手册 (作者:栾鹏) js系列教程3-字符串.正则表达式全解 js中字符串类型转化 其他类型转化为字符串: 代码如下: var num= 19; // 19 var myStr = nu ...

  4. 当面试官问:JS中原始类型有哪些?

    这个问题基本回答: 原始类型有:string/number/boolean/null/undefined/symbol,总共六类 其中包含了ES6新增的symbol,以及ES10新增的BigInt 回 ...

  5. JS中(JS转换json/jQuery转换json)中的long型大数精度丢失问题

    最近在后台向前台传输对象id时,遇到一个奇怪的问题.类似代码如下: var str = '{"id":217998860110340096}'; var jsonObj1 = $. ...

  6. java double 运算精度问题_关于java中Double类型的运算精度问题

    如果我们编译运行下面这个程序会看到什么? public class Test{     public static void main(String args[]){         System.o ...

  7. ORACLE 中NUMBER类型默认的精度和Scale问题

    在ORACLE数据库中,NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10^-130~10^126(不包含此值),需要1~22字节(BYTE)不等的存储空间.P 是Precison的英文 ...

  8. oracle精度说明符1~38_ORACLE 中NUMBER类型默认的精度和Scale问题

    在ORACLE数据库中,NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10^-130~10^126(不包含此值),需要1~22字节(BYTE)不等的存储空间.P是Precison的英文缩 ...

  9. pgsql中float4导致java程序精度丢失_Java基础系列02

    注释 Java中支持三种注释:1.单行注释以//开始换行结束.2.多行注释以/*开始,以*/结束.3.说明注释以/**开始,以*/结束. 关键字 关键字:是指在程序中,Java已经定义好的单词,具有特 ...

最新文章

  1. Windows CMD控制台默认编码设置为UTF-8的方法介绍
  2. 2020 我的C++学习之路 C++PrimerPlus第十章课后习题
  3. 笔记-中项案例题-2021年上-人力资源管理和沟通管理
  4. [机器学习] ML重要概念:梯度(Gradient)与梯度下降法(Gradient Descent)
  5. python需要什么包装_python学习之包装与授权
  6. Python @staticmethod
  7. 如果你想自己创业,做社区超市
  8. [概率论]-随机变量
  9. system2之:4-LVM逻辑卷管理
  10. 地址后面的sessionid怎么消除_富贵包的消除和改善头前倾,通过运动和减肥可以吗?...
  11. SpringBoot 配置文件加载优先级
  12. 新计算机的word无法输入文字,Win10专业版系统为什么不能给电脑Word输入中文汉字...
  13. PR标题动画模板 创意动态多行标题注释字幕条pr模板
  14. 说一说关于破解支付宝AR红包的事
  15. ABAQUS 求解应力强度因子
  16. 测试/开发程序员的思考,突破变得更强......
  17. Hive:从HDFS回收站恢复被删的表
  18. 6713EDMA总结(一)
  19. 导波系统传输TM波和TE波的条件
  20. android人脸识别应用架构,基于Android平台人脸识别系统的设计与实现

热门文章

  1. 通知提示音修改默认铃声
  2. 招聘面试的STAR原则
  3. 【单调栈】zjoj p1859子序列累加和
  4. 雷军在联想演讲:全场无言,除了掌声
  5. 用python成为顶级黑客-python绝技:运用python成为顶级黑客 PDF 超清中文版
  6. vue 移入显示_vue鼠标移入显示点赞图标,移出隐藏点赞图标,现在我想点击点赞图标,鼠标移出不会隐藏图标,怎么做?...
  7. 2022TGRS/云检测:用于遥感图像云检测的无监督域不变特征学习Unsupervised Domain-Invariant Feature Learning for Cloud Detection
  8. 极速office(Word)怎么修改纸张方向
  9. linux 命令:ps 详解
  10. Excel公式:用COUNTIF、COUNTIFS函数进行排序和查重,用LOOKUP函数对无序表进行精确查询