【发布时间】:2009-07-06 11:45:43
【问题描述】:
对于一个 Web 应用程序,我希望能够处理最大为 64 位的数字。 在测试过程中,我发现 javascript(或整个浏览器)似乎可以处理多达 17 位数字。一个 64 位的数字最多有 20 位数字,但是在 javascript 处理完数字之后,将最低有效 3 位四舍五入并设置为 0.... 任何想法这是从哪里来的? 更重要的是,知道如何解决它吗?
【问题讨论】:
标签: javascript numbers
对于一个 Web 应用程序,我希望能够处理最大为 64 位的数字。 在测试过程中,我发现 javascript(或整个浏览器)似乎可以处理多达 17 位数字。一个 64 位的数字最多有 20 位数字,但是在 javascript 处理完数字之后,将最低有效 3 位四舍五入并设置为 0.... 任何想法这是从哪里来的? 更重要的是,知道如何解决它吗?
【问题讨论】:
标签: javascript numbers
在Javascript中,所有数字都是IEEE double precision浮点数,这意味着你只有大约16位的精度;剩余的 64 位为指数保留。正如 Fabien 所说,如果您需要全部 64 位,则需要使用一些技巧来获得更高的精度。
【讨论】:
如果您已达到 Javascript 限制,我认为您需要将它们视为字符串 (see here)
【讨论】:
正如其他人所说,JS 实现了双精度数,因此您必须寻找其他地方来处理更大的数字。 BigInt 是一个用于整数任意精度数学的库。
【讨论】:
您可以尝试将它们分成两个或多个数字(可能在一个类中),但您可能需要一些算术辅助函数来处理它们。
干杯
【讨论】: