func (i BigInt) Sprint(conf *config.Config) string { bitLen := i.BitLen() format := conf.Format() var maxBits = (uint64(conf.MaxDigits()) * 33222) / 10000 // log 10 / log 2 is 3.32192809489 if uint64(bitLen) > maxBits && maxBits != 0 { // Print in floating point. return BigFloat{newF(conf).SetInt(i.Int)}.Sprint(conf) } if format != "" { verb, prec, ok := conf.FloatFormat() if ok { return i.floatString(verb, prec) } return fmt.Sprintf(format, i.Int) } // Is this from a rational and we could use an int? if i.BitLen() < intBits { return Int(i.Int64()).Sprint(conf) } switch conf.OutputBase() { case 0, 10: return fmt.Sprintf("%d", i.Int) case 2: return fmt.Sprintf("%b", i.Int) case 8: return fmt.Sprintf("%o", i.Int) case 16: return fmt.Sprintf("%x", i.Int) } Errorf("can't print number in base %d (yet)", conf.OutputBase()) return "" }
func (i Int) Sprint(conf *config.Config) string { format := conf.Format() if format != "" { verb, prec, ok := conf.FloatFormat() if ok { return i.floatString(verb, prec) } return fmt.Sprintf(format, int64(i)) } base := conf.OutputBase() if base == 0 { base = 10 } return strconv.FormatInt(int64(i), base) }