输入是一个缓冲区,包含单精度浮点数(32位,小端序)。
我想生成的是一个 JSON 字符串,其中包含这些数字,保留相同的值且不改变精度。
问题在于:一旦值存储在 JS 的 number
中,它就被转换为 64 位,引入了精度变化。
例如:
const buffer = Buffer.from("cdcccc3d", "hex"); // cdcccc3d is 0.1 in 32 bits float LE
console.log(buffer.readFloatLE(0)); // 0.10000000149011612 => bad
如何将此值作为字符串获取并保留原始精度而不进行转换?这里是:
"0.1"
。如果我能够生成包含具有原始精度的数字的JSON字符串,则可以得到奖励分数:
{ "value": 0.1 }
。