根据《JS权威指南》,如果进行位运算,数字会自动转换为32位:位运算符期望整数操作数,并将这些值视为32位整数而不是64位浮点数。这些运算符将其操作数转换为数字(必要时),然后通过删除任何小数部分和第32位之后的任何位来强制将数值转换为32位整数。移位运算符要求右侧操作数在0到31之间。将此操作数转换为无符号32位整数后,它们会删除超过第5位的任何位,从而产生适当范围内的数字。你所要做的就是对数字执行位运算,例如将其与0进行OR运算。你将得到相同的数字,但它将是32位的。
当我想将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 因此,根据您的使用情况,这可能适合您。
N % (2 ** 32)
是获取下半部分的一个选项。而Math.floor(N / (2 ** 32))
则是获取上半部分的方法。;-; 我不得不将Date.now()
转换,因为我使用的 ECS 库只支持 32 位整数。 - undefined