javascript - 哪些数字可以安全地转换为 JavaScript 数字类型?
问题描述
给定一个发送小数点后 4 位或 6 位数字的后端,这些数字是否总是会完全转换为 JavaScript 数字类型(在 JSON 反序列化期间)?哪些数字会引起问题?
提示:假设后端是精确的,没有舍入错误等。我需要了解前端可能在什么时候出现问题。
解决方案
伯吉评论:
JS(双精度浮点)数字具有大约 16 位十进制数字的精度。小数点前后有多少无所谓,两边都要算。因此,只要您在该点之前有 <=10 位数字并且在该点之后有 <= 6 位数字,就可以了。– 贝尔吉
然而,正如 Eric Postpischil 在对相关问题的回答中所说,a double
orfloat
格式具有“一些十进制数字是草率的术语”。因为double
andfloat
通常对应于二进制数,而不是十进制数(更具体地说,分别是 IEEE 754 binary64 和 binary32),并且并非所有十进制数都可以无损地转换为二进制数。
推荐阅读
- react-native - 渲染方法中的console.log显示state = true,但jsx显示false
- python-3.x - 如何在熊猫的新列中添加列表?
- python - 将正则表达式与 html 标签相结合
- haskell - 如何使用 Haskell 超时函数(在 System.Timeout 中)来停止失控计算?
- .net - LINQ - 分组依据和总和
- jpa - 如何从子查询中获取结果作为查询中的参数
- r - 如何在数据框的每一列中删除异常值(距离平均值 3 个标准差)
- c# - 继承接口相关无法转换
- linux - 远程命令替换失败
- java - SIP 和 SIPS URI 的正则表达式