js中Numer类型最大值9007199254740991,精度丢失问题解决
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,精度丢失问题解决相关推荐
- 后端 Long类型,超过 js 的number类型最大值的解决办法
先看问题: 数据库 id 为 Bigint 类型: 通过后端逻辑取值返回给前端: JS 的number类型有个最大值(安全值).即2的53次方,为9007199254740992(16位).如果超过这 ...
- String转double类型会造成精度丢失
** String转double类型会造成精度丢失 ** String num=9.78:System.out.println( Double.parseDouble(num)*100); 理论上的结 ...
- js中字符串类型转化toString、parseInt、parseFloat、Number
全栈工程师开发手册 (作者:栾鹏) js系列教程3-字符串.正则表达式全解 js中字符串类型转化 其他类型转化为字符串: 代码如下: var num= 19; // 19 var myStr = nu ...
- 当面试官问:JS中原始类型有哪些?
这个问题基本回答: 原始类型有:string/number/boolean/null/undefined/symbol,总共六类 其中包含了ES6新增的symbol,以及ES10新增的BigInt 回 ...
- JS中(JS转换json/jQuery转换json)中的long型大数精度丢失问题
最近在后台向前台传输对象id时,遇到一个奇怪的问题.类似代码如下: var str = '{"id":217998860110340096}'; var jsonObj1 = $. ...
- java double 运算精度问题_关于java中Double类型的运算精度问题
如果我们编译运行下面这个程序会看到什么? public class Test{ public static void main(String args[]){ System.o ...
- ORACLE 中NUMBER类型默认的精度和Scale问题
在ORACLE数据库中,NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10^-130~10^126(不包含此值),需要1~22字节(BYTE)不等的存储空间.P 是Precison的英文 ...
- oracle精度说明符1~38_ORACLE 中NUMBER类型默认的精度和Scale问题
在ORACLE数据库中,NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10^-130~10^126(不包含此值),需要1~22字节(BYTE)不等的存储空间.P是Precison的英文缩 ...
- pgsql中float4导致java程序精度丢失_Java基础系列02
注释 Java中支持三种注释:1.单行注释以//开始换行结束.2.多行注释以/*开始,以*/结束.3.说明注释以/**开始,以*/结束. 关键字 关键字:是指在程序中,Java已经定义好的单词,具有特 ...
最新文章
- Windows CMD控制台默认编码设置为UTF-8的方法介绍
- 2020 我的C++学习之路 C++PrimerPlus第十章课后习题
- 笔记-中项案例题-2021年上-人力资源管理和沟通管理
- [机器学习] ML重要概念:梯度(Gradient)与梯度下降法(Gradient Descent)
- python需要什么包装_python学习之包装与授权
- Python @staticmethod
- 如果你想自己创业,做社区超市
- [概率论]-随机变量
- system2之:4-LVM逻辑卷管理
- 地址后面的sessionid怎么消除_富贵包的消除和改善头前倾,通过运动和减肥可以吗?...
- SpringBoot 配置文件加载优先级
- 新计算机的word无法输入文字,Win10专业版系统为什么不能给电脑Word输入中文汉字...
- PR标题动画模板 创意动态多行标题注释字幕条pr模板
- 说一说关于破解支付宝AR红包的事
- ABAQUS 求解应力强度因子
- 测试/开发程序员的思考,突破变得更强......
- Hive:从HDFS回收站恢复被删的表
- 6713EDMA总结(一)
- 导波系统传输TM波和TE波的条件
- android人脸识别应用架构,基于Android平台人脸识别系统的设计与实现
热门文章
- 通知提示音修改默认铃声
- 招聘面试的STAR原则
- 【单调栈】zjoj p1859子序列累加和
- 雷军在联想演讲:全场无言,除了掌声
- 用python成为顶级黑客-python绝技:运用python成为顶级黑客 PDF 超清中文版
- vue 移入显示_vue鼠标移入显示点赞图标,移出隐藏点赞图标,现在我想点击点赞图标,鼠标移出不会隐藏图标,怎么做?...
- 2022TGRS/云检测:用于遥感图像云检测的无监督域不变特征学习Unsupervised Domain-Invariant Feature Learning for Cloud Detection
- 极速office(Word)怎么修改纸张方向
- linux 命令:ps 详解
- Excel公式:用COUNTIF、COUNTIFS函数进行排序和查重,用LOOKUP函数对无序表进行精确查询