JavaScript中浮点常量的高效编码

JavaScript中浮点常量的高效编码,javascript,math.js,Javascript,Math.js,我正在用JavaScript编写一个信号处理演示。为此,我需要存储相对较大的浮点向量。如果我以天真的方式(使用): 它可以正常工作,但源代码很容易就有兆字节 是否有一种方法可以表示浮点值(例如,在base64编码中),从而压缩源代码?一种方法是使用类型化数组并以十六进制(每个字节两位数)序列化底层字节缓冲区。不像base64那样节省空间,但是简单而且没有unicode的麻烦 let data=new Float32Array([ -35.545806884765625, -3.11951756

我正在用JavaScript编写一个信号处理演示。为此,我需要存储相对较大的浮点向量。如果我以天真的方式(使用):

它可以正常工作,但源代码很容易就有兆字节


是否有一种方法可以表示浮点值(例如,在base64编码中),从而压缩源代码?

一种方法是使用类型化数组并以十六进制(每个字节两位数)序列化底层字节缓冲区。不像base64那样节省空间,但是简单而且没有unicode的麻烦

let data=new Float32Array([
-35.545806884765625,
-3.1195175647735596
]
);
console.log(数据)
//编码
让编码=“”;
for(设新Uint8Array(data.buffer)的x)
编码+=(x | 0x100).toString(16).切片(1);
console.log(编码)
//解码
let bytes=new Uint8Array(
编码的
.match(/../g)
.map(x=>parseInt(x,16));
让decodedData=newfloat32array(bytes.buffer)

console.log(解码数据)值的范围是什么?需要哪种精度?值在-50和+50之间,6-8个有效数字就足够了。相关:@Jonaswillms:是的,添加了相关链接
var vector = math.matrix([-35.545806884765625, -3.1195175647735596,  ...]);