【问题标题】:Float32Array weird precision lossFloat32Array 奇怪的精度损失
【发布时间】:2021-06-07 14:15:41
【问题描述】:

如果将以下值分配给Float32Array,则它会被更改。我不明白为什么。它在 32 位浮点数的范围内 (

let arr = new Float32Array(1);
arr[0] = 1623070800.1873195;

console.log(arr[0]); // --> 1623070848

Float64Array 也是如此:

let arr = new Float64Array(1);
arr[0] = 1623070800.1873195;

console.log(arr[0]); // --> 1623070800.1873195

有什么想法吗?

【问题讨论】:

  • 您正在尝试存储需要超过 32 位精度才能准确表示的值。
  • 在处理较大的数字时,分数精度的损失是完全正常的。请阅读this 以更好地了解您面临的基本限制。
  • “它在 32 位浮点的范围内” — 限制是 精度,而不是幅度。您不能将任意精确的数字存储为 float32。
  • @SebastianSimon:谢谢!只需在 C++ (godbolt.org/z/h63sor1c1) 中仔细检查结果。一样的。我假设精度损失较小......

标签: javascript node.js ecmascript-6


【解决方案1】:

对不起,这完全正常。

与 C++ 相同的结果:https://godbolt.org/z/h63sor1c1

【讨论】:

    猜你喜欢
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    • 2015-04-26
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多