能否将JavaScript数字设置为32位?

3

是否可以将JavaScript数字设置为32位而不是64位?


不,但你可以只使用32位或64位中的一个?请告诉我们你需要它做什么。 - undefined
1
如果你有很多值并且担心内存空间,可以看一下类型化数组(https://developer.mozilla.org/en-US/docs/Web/API/Float32Array),但正如Bergi所说,JavaScript只支持64位浮点数,使用类型化数组时,64位的值会被舍入为32位进行存储,并在读取时提升为64位。 - undefined
我正在构建一个绘图计算器,并希望使用32位来提高速度。 - undefined
JavaScript的数字不是64位整数,而是双精度浮点数。 - undefined
N % (2 ** 32) 是获取下半部分的一个选项。而 Math.floor(N / (2 ** 32)) 则是获取上半部分的方法。;-; 我不得不将 Date.now() 转换,因为我使用的 ECS 库只支持 32 位整数。 - undefined
2个回答

4
根据《JS权威指南》,如果进行位运算,数字会自动转换为32位:位运算符期望整数操作数,并将这些值视为32位整数而不是64位浮点数。这些运算符将其操作数转换为数字(必要时),然后通过删除任何小数部分和第32位之后的任何位来强制将数值转换为32位整数。移位运算符要求右侧操作数在0到31之间。将此操作数转换为无符号32位整数后,它们会删除超过第5位的任何位,从而产生适当范围内的数字。你所要做的就是对数字执行位运算,例如将其与0进行OR运算。你将得到相同的数字,但它将是32位的。

2
当我想将JavaScript数字“转换”为32位时,遇到了这个问题,因为Web Audio API将AudioParam值存储为32位,并且我在比较应用程序状态中的值与AudioParam值时遇到了问题,它们不相同。
最终,我了解了Math.fround(),它会将您的数字四舍五入为:

最接近Number的32位单精度浮点表示

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/fround

因此,根据您的使用情况,这可能适合您。

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