func (f *Float) Add(g interface{}) *Float {
	gf := toFloat(g)
	if gf == nil {
		return nil
	}
	f.Float.Add(&f.Float, &gf.Float)
	return f
}
Add sets f to `f+g` and return the f as the result.
package big
import (
	"bytes"
	"log"
	"math/big"
)
var DefaultBitPrecision uint = 128
var DefaultRoundingMode = big.ToNearestAway
type Float struct {
	big.Float
}
func AddFloat(f, g interface{}) *Float {
	ff := toFloat(f)
	gf := toFloat(g)
	if ff == nil {
		return nil
	}
	if gf == nil {
		return nil
	}
	h := gf.Clone()
	return h.Add(gf)
}
func NewFloat(v float64) *Float {
	f := &Float{}
	f.SetPrec(DefaultBitPrecision)
	f.SetMode(DefaultRoundingMode)
	f.SetFloat64(v)
	return f
}
func CreateFloat(v float64) Float {
	f := Float{}
	f.SetPrec(DefaultBitPrecision)
	f.SetMode(DefaultRoundingMode)
	f.SetFloat64(v)
	return f
}
func MulFloat(f, g interface{}) *Float {
	ff := toFloat(f)
	if ff == nil {
		return nil
	}
	gf := toFloat(g)
	if gf == nil {
		return nil
	}
	h := ff.Clone()
	return h.Mul(gf)
}
func MustParseFloat(s string) (f *Float) {
	f = NewFloat(0)
	_, _, err := f.Float.Parse(s, 10)
	if err != nil {
		log.Fatal("MustParseFloat:", err)
	}
	return f
}
func ParseFloat(s string) (f *Float, err error) {
	f = NewFloat(0)
	_, _, err = f.Float.Parse(s, 10)
	if err != nil {
		return nil, err
	}
	return f, nil
}
func QuoFloat(f, g interface{}) *Float {
	ff := toFloat(f)
	if ff == nil {
		return nil
	}
	gf := toFloat(g)
	if gf == nil {
		return nil
	}
	h := ff.Clone()
	return h.Quo(gf)
}
func SubFloat(f, g *Float) *Float {
	h := f.Clone()
	return h.Sub(g)
}