decoder.go
func (d *decode) readFloat64() (float64, error) {
	length, err := d.readUint8()
	if err != nil {
		return 0, err
	}
	switch length {
	case 253:
		return math.NaN(), nil
	case 254:
		return math.Inf(0), nil
	case 255:
		return math.Inf(-1), nil
	default:
		floatBytes := make([]byte, length)
		_, err := io.ReadFull(d.r, floatBytes)
		if err != nil {
			return 0, err
		}
		f, err := strconv.ParseFloat(string(floatBytes), 64)
		return f, err
	}

	panic("not reached")
}
func (d *decode) readFloat64() (float64, error) {
	length, err := d.readUint8()
	if err != nil {
		return 0, err
	}
	switch length {
	case 253:
		return math.NaN(), nil
	case 254:
		return math.Inf(0), nil
	case 255:
		return math.Inf(-1), nil
	default:
		floatBytes := make([]byte, length)
		_, err := io.ReadFull(d.r, floatBytes)
		if err != nil {
			return 0, err
		}
		f, err := strconv.ParseFloat(string(floatBytes), 64)
		return f, err
	}

	panic("not reached")
}
func ( d * decode ) readFloat64 ( ) ( float64 , error ) { length , err := d . readUint8 ( ) if err != nil { return 0 , err } switch length { case 253 : return math . NaN ( ) , nil case 254 : return math . Inf ( 0 ) , nil case 255 : return math . Inf ( - 1 ) , nil default : floatBytes := make ( [ ] byte , length ) _ , err := io . ReadFull ( d . r , floatBytes ) if err != nil { return 0 , err } f , err := strconv . ParseFloat ( string ( floatBytes ) , 64 ) return f , err } panic ( " " ) }
// Doubles are saved as strings prefixed by an unsigned
// 8 bit integer specifying the length of the representation.
// This 8 bit integer has special values in order to specify the following
// conditions:
// 253: not a number
// 254: + inf
// 255: - inf
Doubles are saved as strings prefixed by an unsigned 8 bit integer specifying the length of the representation . This 8 bit integer has special values in order to specify the following conditions : 253 : not a number 254 : + inf 255 : - inf