【发布时间】:2016-11-12 20:15:34
【问题描述】:
在 Javascript 中(在 Chrome devtools 控制台面板和 Node.js v0.12.5 中),对于这两个大数的乘积,我得到的答案不正确:
输入:41962049 * 1827116622
输出:76669557221078480
在 C++ 和 C# 中,将表达式转换为 64 位 int 时,我得到了正确答案 76669557221078478。
我假设这是一个整数溢出问题,但我肯定是错的。
有没有一种方法可以在不使用 BigInteger 之类的外部库的情况下在 Javascript 中获得大数的精确算术乘积?这是针对不允许附加库的在线课程。
感谢您的帮助。
编辑:感谢您解释这实际上不是整数溢出,Patrick Roberts!很有用。
编辑 2:jfriend00,我认为这个问题与您链接的问题不同,因为我试图弄清楚是否有一种方法可以在不依赖外部库的情况下解决 JS 的限制。您在 cmets 中提供的答案帮助回答了我的问题,谢谢!
【问题讨论】:
-
没有。除了自己编写自己的 bigint 功能或使用已经这样做的库之外,没有内置功能。见What is JavaScript's highest integer value that a Number can go to without losing precision?。
-
顺便说一句,ideone.com/lyXfdU --- C#,ideone.com/F6DZ71 --- C++。
-
不知道那个站点 zerkms。相当漂亮!使用 long (C#) 或 long long (C++) 我得到了正确的结果。 ideone.com/OshLAb -- C# ideone.com/NMs0L2 -- C++
标签: javascript node.js algorithm ieee-754