private static Double ReadFast(ref MessagePackReader reader, ref byte position)
        {
            var value = new Float64Bits(ref position).Value;

            reader.AdvanceWithinSpan(9);
            return(value);
        }
Exemplo n.º 2
0
        public unsafe void Write(double value)
        {
            var f = new Float64Bits(value);

            f.CopyTo(_bufferWriter.GetSpan(8));
            _bufferWriter.Advance(8);
        }
Exemplo n.º 3
0
    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);
        }
    }
Exemplo n.º 4
0
        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);
        }