Я стараюсь хранить одну float
значения через Buffer
в Node.js
В Node.js/V8 нет реального типа float?
> f = 3.3
3.3
> var buf = new Buffer(32)
> buf.writeFloatBE(f);
4
> g = buf.readFloatBE();
3.299999952316284
Тогда я нашел сохраненное значение g
после readFloatBE()
НЕ равно исходных f
.
После дальнейшего исследования эти два значения буфера, хранящиеся g
и f
, являются такими же.
> var buf1 = new Buffer(4); buf1.writeFloatBE(f); buf1
<Buffer 40 53 33 33>
> var buf2 = new Buffer(4); buf2.writeFloatBE(g); buf2
<Buffer 40 53 33 33>
Согласно этому Buffer reading and writing floats, мы знаем, что writeDoulbeBE
следует использовать здесь.
> var buf3 = new Buffer(8);
> buf3.writeDoubleBE(f);
8
> h = buf3.readDoubleBE();
3.3
> h === f
true
Я хочу знать, почему float
типа не используется в Node.js
или V8
? Обратитесь к code из V8
// Fast primitive setters
V8_INLINE void Set(bool value);
V8_INLINE void Set(double i);
V8_INLINE void Set(int32_t i);
V8_INLINE void Set(uint32_t i);
Кажется, нет НИКАКОГО float
типа в V8
, какой-либо причине такой конструкции или я что-то отсутствует? В этом случае, должна ли использоваться эта функция writeFloatBE()
?