获得徽章 0
今天遇到了一个问题:
我有一个字段a,拿到字段时候是string,但是传值的时候要求是number。
起初不知道字段a的具体值是什么,对我而言是左兜掏出放右兜了。我就直接Number(a)就没管了。
同事说我给他的字段是错的,他怎么找也没找到这个值。
我就一步步console都没问题,我就想Number(a)不对?那我就a - 0,哈哈哈。不出意料的还是不对。
a的值为"1817944422292856833",输出为 1817944422292856800。
JavaScript 的 Number 类型基于 IEEE 754 双精度浮点数 标准,其有效整数精度仅能覆盖到 2^53 - 1(即 9007199254740991)。超过这个范围的整数,无法被 Number 精确表示,会丢失末尾的精度(被舍入)。
a-0是隐式类型转换规则,当执行 a - 0 时,字符串 a(值为 "1817944422292856833")会先被隐式转换为 Number 类型(等价于执行 Number(a));
真是学到的知识都还给老师了。
我有一个字段a,拿到字段时候是string,但是传值的时候要求是number。
起初不知道字段a的具体值是什么,对我而言是左兜掏出放右兜了。我就直接Number(a)就没管了。
同事说我给他的字段是错的,他怎么找也没找到这个值。
我就一步步console都没问题,我就想Number(a)不对?那我就a - 0,哈哈哈。不出意料的还是不对。
a的值为"1817944422292856833",输出为 1817944422292856800。
JavaScript 的 Number 类型基于 IEEE 754 双精度浮点数 标准,其有效整数精度仅能覆盖到 2^53 - 1(即 9007199254740991)。超过这个范围的整数,无法被 Number 精确表示,会丢失末尾的精度(被舍入)。
a-0是隐式类型转换规则,当执行 a - 0 时,字符串 a(值为 "1817944422292856833")会先被隐式转换为 Number 类型(等价于执行 Number(a));
真是学到的知识都还给老师了。
展开
8
点赞
![[如花]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_92.13db022.png)