Javascript根据spec将所有数字存储为双精度64位格式IEEE 754值:
数字类型恰好是18437736874454810627(即2 64 -2 53 +3) 值,表示双精度64位格式IEEE 754 IEEE二进制浮点标准中规定的值 算术
有没有办法在Javascript中查看此表单中的数字?
答案 0 :(得分:3)
您可以使用类型化数组来检查数字的原始字节。使用一个元素创建Float64Array
,然后使用相同的缓冲区创建Uint8Array
。然后,您可以将float数组的第一个元素设置为您的数字,并通过Uint8Array
检查字节数。你必须为一些课程的各个部分进行一些转换和组合,但这并不难。
没有内置工具可以执行提取指数的工作。
答案 1 :(得分:3)
基于@Pointy的建议,我已经实现了以下功能,以获得64位浮点IEEE754表示中的数字:
function to64bitFloat(number) {
var f = new Float64Array(1);
f[0] = number;
var view = new Uint8Array(f.buffer);
var i, result = "";
for (i = view.length - 1; i >= 0; i--) {
var bits = view[i].toString(2);
if (bits.length < 8) {
bits = new Array(8 - bits.length).fill('0').join("") + bits;
}
result += bits;
}
return result;
}
console.log(to64bitFloat(12)); // 0100000000101000000000000000000000000000000000000000000000000000
console.log(to64bitFloat(-12)); // 1100000000101000000000000000000000000000000000000000000000000000