首页 文章

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

提问于
浏览
7

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

Number类型具有18437736874454810627(即264-253 3)值,表示IEEE标准二进制浮点运算中指定的双精度64位格式IEEE 754值

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

2 回答

  • 3

    您可以使用类型化数组来检查数字的原始字节 . 使用一个元素创建 Float64Array ,然后使用相同的缓冲区创建 Uint8Array . 然后,您可以将float数组的第一个元素设置为您的数字,并通过 Uint8Array 检查字节 . 你'll have to do some shifting and combining for the various pieces of the number of course, but it'并不难 .

    没有内置工具可以执行提取指数等操作 .

  • 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
    

相关问题