code: func convertNvFloat(v interface{}, max float64) (driver.Value, error) {
  
  	if v == nil {
  		return v, nil
  	}
  
  	rv := reflect.ValueOf(v)
  	switch rv.Kind() {
  
  	case reflect.Float32, reflect.Float64:
  		f64 := rv.Float()
  		if math.Abs(f64) > max {
  			return nil, ErrFloatOutOfRange
  		}
  		return f64, nil
  	case reflect.Ptr:
  		// indirect pointers
  		if rv.IsNil() {
  			return nil, nil
  		}
  		return convertNvFloat(rv.Elem().Interface(), max)
  	}
  
  	return nil, fmt.Errorf("unsupported float conversion type error %[1]T %[1]v", v)
  }
docs: // float types