Javascript 中对 64 位浮点的本机支持

普布杜多丹戈达

正如这里的问题所述,即使是最新的 Ecmascript 8 也不支持 64 位整数。

但是bigInt第 3 阶段提案看起来很有希望,我预计很快就会将其添加到 Js 规范中。

但是,即使根据提案,我们也必须使用特殊的构造函数来声明大数。(Q1)无法以一般方式表示大数字背后技术原因是什么

let bigNum = 2 ** 64 // Why can't JS do this without losing precision? (at least in future)

我知道JavaScript 使用 IEEE-754 双精度(64 位)浮点表示所有数字,这会导致问题。

(Q2)为什么 Javascript 不能使用其他一些不会失去精度的标准表示所有数字

(Q3)如果 Javascript 真的这么做了,会出现什么问题?

编辑:正如 TJ 所说,我们可以使用后缀代替构造函数,但我仍然觉得这不完全是通用符号

TJ克劳德

(Q1) 无法以一般方式表示大数字背后的技术原因是什么?

打破网络。JavaScript 数字的基本原理现在不能改变,在它们最初定义 20 多年后。还有性能问题:由于内置在 CPU 和数学协处理器中,JavaScript 的当前数字(IEEE-754 二进制双精度 [64 位] 精度)是非常快的浮点数。这种速度的代价是精度;任意精度(或显着更大的精确范围)的成本是性能。

未来的某一天,如果这些格式(2008 年引入)扩散到生态系统中并获得硬件支持,那么JavaScript 可能会获得 IEEE-754 64 位甚至 128 位十进制浮点数(参见此处此处)。但这是我的猜测。:-)

(Q2) 为什么 Javascript 不能使用其他一些不会失去精度的标准来表示所有数字?

见 Q1。:-)

(Q3) 如果 Javascript 真的这么做了,会出现什么问题?

见 Q1。:-)

即使根据提案,我们也必须使用特殊的构造函数来声明大数。

如果你特别想要 64 位。如果您只想要 BigInts,该提案将包含一个新符号,即n后缀:2nis a BigInt 2。因此,对于 BigInts,您的示例将是

let bigNum = 2n ** 64n;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

64位Python中的32位浮点数学

来自分类Dev

64位按位且在Javascript中不起作用

来自分类Dev

更改Verilog中64位浮点数的符号?

来自分类Dev

JavaScript中的64位整数,来自Mysql请求

来自分类Dev

如何检查Windows中的硬件是否支持64位?

来自分类Dev

JavaScript:数字的64位影响

来自分类Dev

在Java应用程序中混合运行32位和64位本机库

来自分类Dev

在32位浏览器中,Javascript数字是否表示为64位数字?

来自分类Dev

在Javascript中将64位十六进制转换为十进制浮点数

来自分类Dev

浮点“错误”是PHP 64位

来自分类Dev

如何在javascript中将双精度(64位)数字转换/存储为32位浮点数或UInt16

来自分类Dev

QML中的64位整数

来自分类Dev

Java中的64位HashMap

来自分类Dev

64位atomicAdd在CUDA中

来自分类Dev

在 64 位中禁用 QuickEditMode

来自分类Dev

有什么办法可以看到它的64位浮点IEEE754表示形式中的数字

来自分类Dev

将二进制文件中的 64 位浮点值导入 python

来自分类Dev

Javascript 不支持 64 位整数,为什么 new Date().getTime() 返回 41 位数字?

来自分类Dev

PrestoSQL的32位或64位浮点除法

来自分类Dev

将.NET DLL中的32位本机DLL包装为在64位.NET应用程序中使用

来自分类Dev

EasyHook:从本机C应用程序中的32位应用程序注入64位dll吗?

来自分类Dev

无法在 JavaScript 中解码 base64

来自分类Dev

在汇编中从32位变为64位

来自分类Dev

R Windows 64位版本中不支持Long Vector,但仍存在错误

来自分类Dev

在 Javascript 中始终将数字作为 64 个浮点数到底是什么意思?

来自分类Dev

为什么浮点文字 3.14f 在 LLVM 中由 64 位值 0x40091EB860000000 表示?

来自分类Dev

如何在Windows 7 64中的64位Apache上使PHP 64位工作并启用?

来自分类Dev

在Windows 7 64位中安装Pybrain

来自分类Dev

Ubuntu 13.04 64位中的Firefox问题

Related 相关文章

  1. 1

    64位Python中的32位浮点数学

  2. 2

    64位按位且在Javascript中不起作用

  3. 3

    更改Verilog中64位浮点数的符号?

  4. 4

    JavaScript中的64位整数,来自Mysql请求

  5. 5

    如何检查Windows中的硬件是否支持64位?

  6. 6

    JavaScript:数字的64位影响

  7. 7

    在Java应用程序中混合运行32位和64位本机库

  8. 8

    在32位浏览器中,Javascript数字是否表示为64位数字?

  9. 9

    在Javascript中将64位十六进制转换为十进制浮点数

  10. 10

    浮点“错误”是PHP 64位

  11. 11

    如何在javascript中将双精度(64位)数字转换/存储为32位浮点数或UInt16

  12. 12

    QML中的64位整数

  13. 13

    Java中的64位HashMap

  14. 14

    64位atomicAdd在CUDA中

  15. 15

    在 64 位中禁用 QuickEditMode

  16. 16

    有什么办法可以看到它的64位浮点IEEE754表示形式中的数字

  17. 17

    将二进制文件中的 64 位浮点值导入 python

  18. 18

    Javascript 不支持 64 位整数,为什么 new Date().getTime() 返回 41 位数字?

  19. 19

    PrestoSQL的32位或64位浮点除法

  20. 20

    将.NET DLL中的32位本机DLL包装为在64位.NET应用程序中使用

  21. 21

    EasyHook:从本机C应用程序中的32位应用程序注入64位dll吗?

  22. 22

    无法在 JavaScript 中解码 base64

  23. 23

    在汇编中从32位变为64位

  24. 24

    R Windows 64位版本中不支持Long Vector,但仍存在错误

  25. 25

    在 Javascript 中始终将数字作为 64 个浮点数到底是什么意思?

  26. 26

    为什么浮点文字 3.14f 在 LLVM 中由 64 位值 0x40091EB860000000 表示?

  27. 27

    如何在Windows 7 64中的64位Apache上使PHP 64位工作并启用?

  28. 28

    在Windows 7 64位中安装Pybrain

  29. 29

    Ubuntu 13.04 64位中的Firefox问题

热门标签

归档