相关疑难解决方法(0)

缓冲区读写浮点数

当我将浮点数写入缓冲区时,它不会读回相同的值:

> var b = new Buffer(4);
undefined
> b.fill(0)
undefined
> b.writeFloatBE(3.14159,0)
undefined
> b.readFloatBE(0)
3.141590118408203
> 
(^C again to quit)
> 
Run Code Online (Sandbox Code Playgroud)

为什么?

编辑:

我的工作理论是,因为 javascript 将所有数字存储为双精度,所以当缓冲区实现读回浮点数时,可能无法正确地将双精度数的其他 4 个字节归零:

> var b = new Buffer(4)
undefined
> b.fill(0)
undefined
> b.writeFloatBE(0.1,0)
undefined
> b.readFloatBE(0)
0.10000000149011612
>
Run Code Online (Sandbox Code Playgroud)

我认为这表明小数点后 7 位数字为零(实际上是 8 位),然后就是垃圾。我认为读取这些浮点数的节点缓冲区代码中存在错误。那就是我所想的。这是节点版本 0.10.26。

javascript node.js

4
推荐指数
1
解决办法
7724
查看次数

标签 统计

javascript ×1

node.js ×1