-
Notifications
You must be signed in to change notification settings - Fork 45
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Day3 - Number() 的存储空间是多大?如果后台发送了一个超过最大限制的数字怎么办? #4
Comments
2^1024到2^-1023 |
存储空间(问 1)最大 如果后台发送了一个超过最大限制的数字怎么办(问 2)首先区分这个数字字符串是否需要运算 只需要 UI 展示符合设计的话直接展示字符串,如果长度过长需要截取,找 PO 讨论。 需要计算根据业务场景需要,决定是否需要前端计算,并分类讨论。 需要前端计算对于需要即时得到交互结果的情况,优先让前端进行运算,我们用数字字符串的每一位进行计算,而不是转化为 后端运算在需要运算的时候给后端发请求,参数带上操作数,让后端返回计算结果。 |
存储空间-2^53 + 1 ~ 2^53 - 1 如果后台发送了一个超限的数字一、一般来说服务器必须将超限数字传输给前端则可以双方约定使用字符串类型来作为传输标准,其次作为需求接收方可以再复核一下对应需求是否合理。 二、前端来确认对应值是否需要计算,需要计算则前端采用BigInt来对超限字符进行处理,不需要计算则核对展示形式对应完成需求 |
结论: 64 位双精度存储,最大精确值为2^53-1,超出这个值js不能精确表示分类讨论
个人观点
bignumber结果使用bignumber.js库。 |
Number的存储空间是 8 字节 64位,能精确存储 -(Math.pow(2, 53) - 1)) ~ Math.pow(2, 53)-1,超过这个范围的值也可以存储,但是会丢失精度 如果后台发送了一个超过最大限制的数字应该使用字符串的形式发送,前端根据情况对该字符串做处理
|
储存空间Number() 的存储空间是 +-(Math.pow(2, 53) - 1); 如果数字超过最大限制如果后台发送了一个超过最大限制的数字,js会发生截断,等于 JS 能支持的最大数字; |
储存空间最大存储空间是Number.MAX_VALUE = 2^1024,超过这个范围会被自动转成Infinity 。同时Number中要精确表示一个数字的话只能用Number.MAX_SAFE_INTEGER = 2^53 - 1 , 后面的位数全部自动转换成0。 如果数字超过最大限制
|
存储空间Number() 的存储空间是 2^53 如果后台发送了一个超过最大限制的数字怎么办?表现 :会发生截断,等于 JS 能支持的最大数字 怎么办:与后端协商好通过字符串进行传输,如果前端是用来纯展示,那么直接用字符串来展示即可,如果要计算,可以先转为 |
Number 的存储空间在正负2^53-1之间,如果超出的话就会丢失准确性 |
因为Javascript的数字存储使用了IEEE 754中规定的双精度浮点数数据类型,而这一数据类型能够安全存储 -(2^53 - 1) 到 2^53 - 1 之间的数值(包含边界值)
如果说在实际应用中遇到了超出最大限制的数字 可以让后台返回字符串 如果只是展示,那根据业务场景直接操作字符串, -如果涉及到计算 可以使用BigInt操作 BigInt 可以表示任意大的整数,但是使用他时跟Number类型的混合运算,必须转成同种类型才可以; |
Number()的存储空间是多大?
如果后台发送了一个超过最大限制的数字怎么办
|
在javascript当中Number的存储空间是64为比特位
后端返回了超过这个大小的数时(这里我们猜测返回两种类型)
|
存储空间
解决方案问题1. 如何传输?后端发送给前端的时候把对应数值转为字符串传输或者使用json-bigint将接收到的超限数字转为字符串。 问题2. 只是展示将转为字符串的数值直接展示即可 问题3. 需要计算对字符串进行按位计算 |
|
Number() 的存储空间是多大?如果后台发送了一个超过最大限制的数字怎么办?
|
|
结论:Number的最大储存空间可通过Number.MIN_VALUE ~ Number.MAX_VALUE获得 解决方法先根据需求文档,判断这个数字出现是否合理,以及前端需要做什么处理,是否需要计算
|
Number的存储空间是由其科学计数法的11个指数位和52个有效数字位所决定的。比如Number的max_value就是在指数为1023,有效数字位二进制全为1的情况下所代表的数。而Number的min_value则是在指数为-1022,有效数字为除最后一位是二进制1,其余位全为0的情况下所代表的数。 我认为,如果后端返回的数已经超过了JS中的最大安全数,就应该以字符串的形式来表示该数。如果说需要做数值运算的话,应该使用BigInt类型,或者自己实现代码逻辑去直接处理数字字符串。 参考资料 |
The text was updated successfully, but these errors were encountered: