private static Double ReadFast(ref MessagePackReader reader, ref byte position) { var value = new Float64Bits(ref position).Value; reader.AdvanceWithinSpan(9); return(value); }
public unsafe void Write(double value) { var f = new Float64Bits(value); f.CopyTo(_bufferWriter.GetSpan(8)); _bufferWriter.Advance(8); }
public void FloatBits_TEST() { Xorshift random = new Xorshift(Seed); for (int i = 0; i < 100000; ++i) { double value = random.Uniform(-1.0e+9, 1.0e+9); var enc = new Float64Bits(value); var ms = new MemoryStream(); enc.Write(ms); var dec = new Float64Bits(ms.ToArray(), 0); // perfect equal Assert.AreEqual(dec.Value, value); } for (int i = 0; i < 100000; ++i) { float value = (float)random.Uniform(-1.0e+6, 1.0e+6); var enc = new Float32Bits(value); var ms = new MemoryStream(); enc.Write(ms); var dec = new Float32Bits(ms.ToArray(), 0); // perfect equal Assert.AreEqual(dec.Value, value); } }
public double GetFloat64() { const int BytesLength = 8; Span <byte> bytes = stackalloc byte[BytesLength]; _sequence.Slice(0, BytesLength).CopyTo(bytes); _sequence = _sequence.Slice(BytesLength); var f = new Float64Bits(bytes); return(f.Value); }