JavaScript中实现32位浮点数或64位长整型?

10

请问有没有一个JavaScript库可以准确地实现32位浮点数的IEEE 754规范?我之所以问这个问题,是因为我正在尝试在JavaScript中编写一个交叉编译器,而源语言对浮点数具有严格的IEEE 754要求,生成的JavaScript代码也必须遵循这些要求。这意味着我必须能够获得精确正确的IEEE 754值,以便进行32位浮点数的加法、减法、乘法和除法运算。不幸的是,标准的JavaScript Number类型是64位双精度浮点数,将会给出与我预期不同的结果。这个项目确实必须在JavaScript中完成,这是我迄今为止唯一的主要障碍。

我也遇到了64位长整型的这个问题。


1
你在做什么?!?(印象深刻)具体来说,是为什么编写编译器? - amphetamachine
@amphetamachine- 如果一切顺利(祈祷!),将实现在JavaScript中运行的JVM。这是为了在线教授入门级计算机科学而设计的。我没想到这会成为瓶颈 - 在这之前,我已经弄清楚如何进行线程处理等所有事情了。 :-) - templatetypedef
我猜你已经在这方面投入了很多精力,所以我认为尝试自己实现可能真的值得一试。细节留给读者自行练习。 :) - nss
一个可能有用的技巧:使用位运算符可以强制解释器将数字视为32位有符号整数,而不是64位浮点数。 (number | 0)特别有用,因为它不会影响数字,但会强制将其视为整数值。 - Zach
我确实觉得很荒谬,Javascript在其语言规范中奉为圭臬IEEE-754的binary64(参见ECMA-262 §8.5),但这并不重要... - ephemient
我在寻找同样的东西,出于同样的原因,在 https://github.com/ghewgill/lentil 上发现了你的问题。我们应该合作。 - Greg Hewgill
1个回答

8

@gsnedders- 这太棒了!非常感谢你提供的链接。我今天已经没有投票机会了,但明天一旦开始我一定会给你点赞。 - templatetypedef

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接