有没有办法在它的64位浮点IEEE754表示中看到一个数字

时间:2016-05-07 11:53:49

标签: javascript binary ieee-754

Javascript根据spec将所有数字存储为双精度64位格式IEEE 754值:

  

数字类型恰好是18437736874454810627(即2 64 -2 53 +3)   值,表示双精度64位格式IEEE 754   IEEE二进制浮点标准中规定的值   算术

有没有办法在Javascript中查看此表单中的数字?

2 个答案:

答案 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