【问题标题】:Which numbers can safely be converted into JavaScript numeric type? [duplicate]哪些数字可以安全地转换为 JavaScript 数字类型? [复制]
【发布时间】:2021-05-14 17:04:02
【问题描述】:

假设后端发送小数点后 4 位或 6 位数字,这些数字是否总是被精确转换为 JavaScript 数字类型(在 JSON 反序列化期间)?哪些数字会导致问题?

提示:假设后端是精确的,没有舍入错误等。不过,我需要了解前端可能在什么时候出现问题。

【问题讨论】:

  • 为什么会改变,它们是十进制值而不是要格式化的字符串
  • 框架挑战:您需要它们作为数字吗?如果您只想显示它们,那么您可以将它们作为字符串传递,而不必担心浮点运算。
  • @VLAZ 我认为这是一个公平的问题。解析 6 位小数时是否有可能得到不同的数字?这与 0.1+0.2 或其他数学运算不同。
  • JS(双精度浮点)数字具有大约 16 位十进制数字的精度。小数点前后有多少无所谓,两边都要算。因此,只要您在该点之前有
  • @Bergi 我认为您应该将其发布为答案

标签: javascript numbers


【解决方案1】:

Bergi 的评论:

JS(双精度浮点)数字具有大约 16 位十进制数字的精度。小数点前后有多少无所谓,两边都要算。因此,只要您在该点之前有

但是,正如 Eric Postpischil 在 answer to a related question 中所说,doublefloat 格式具有“一些十进制数字是草率的术语”。因为doublefloat 通常对应的是二进制数字,而不是十进制数字(更具体地说,分别是 IEEE 754 binary64 和 binary32),并且并非所有十进制数字都可以无损地转换为二进制数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-11
    • 2020-08-16
    • 1970-01-01
    • 2015-11-17
    • 2021-03-30
    • 1970-01-01
    • 2012-02-02
    相关资源
    最近更新 更多