本文整理匯總了Golang中github.com/pingcap/tidb/mysql.MyDecimal.Round方法的典型用法代碼示例。如果您正苦於以下問題:Golang MyDecimal.Round方法的具體用法?Golang MyDecimal.Round怎麽用?Golang MyDecimal.Round使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/pingcap/tidb/mysql.MyDecimal
的用法示例。
在下文中一共展示了MyDecimal.Round方法的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: calculateResult
func (af *avgFunction) calculateResult(ctx *ast.AggEvaluateContext) (d types.Datum) {
switch ctx.Value.Kind() {
case types.KindFloat64:
t := ctx.Value.GetFloat64() / float64(ctx.Count)
d.SetValue(t)
case types.KindMysqlDecimal:
x := ctx.Value.GetMysqlDecimal()
y := mysql.NewDecFromInt(ctx.Count)
to := new(mysql.MyDecimal)
mysql.DecimalDiv(x, y, to, mysql.DivFracIncr)
to.Round(to, ctx.Value.Frac()+mysql.DivFracIncr)
d.SetMysqlDecimal(to)
}
return
}
示例2: evalAggAvg
func (e *Evaluator) evalAggAvg(v *ast.AggregateFuncExpr) {
ctx := v.GetContext()
switch ctx.Value.Kind() {
case types.KindFloat64:
t := ctx.Value.GetFloat64() / float64(ctx.Count)
v.SetValue(t)
case types.KindMysqlDecimal:
x := ctx.Value.GetMysqlDecimal()
var y, to mysql.MyDecimal
y.FromUint(uint64(ctx.Count))
mysql.DecimalDiv(x, &y, &to, mysql.DivFracIncr)
to.Round(&to, ctx.Value.Frac()+mysql.DivFracIncr)
v.SetMysqlDecimal(&to)
}
ctx.Value = *v.GetDatum()
}
示例3: GetGroupResult
// GetGroupResult implements AggregationFunction interface.
func (af *avgFunction) GetGroupResult(groupKey []byte) (d types.Datum) {
ctx := af.getContext(groupKey)
switch ctx.Value.Kind() {
case types.KindFloat64:
t := ctx.Value.GetFloat64() / float64(ctx.Count)
d.SetValue(t)
case types.KindMysqlDecimal:
x := ctx.Value.GetMysqlDecimal()
y := mysql.NewDecFromInt(ctx.Count)
to := new(mysql.MyDecimal)
mysql.DecimalDiv(x, y, to, mysql.DivFracIncr)
to.Round(to, ctx.Value.Frac()+mysql.DivFracIncr)
d.SetMysqlDecimal(to)
}
return
}
示例4: decimal2RoundUint
// decimal2RoundUint converts a MyDecimal to an uint64 after rounding.
func decimal2RoundUint(x *mysql.MyDecimal) (uint64, error) {
roundX := new(mysql.MyDecimal)
x.Round(roundX, 0)
var (
uintX uint64
err error
)
if roundX.IsNegative() {
intX, err := roundX.ToInt()
if err != nil && err != mysql.ErrTruncated {
return 0, errors.Trace(err)
}
uintX = uint64(intX)
} else {
uintX, err = roundX.ToUint()
if err != nil && err != mysql.ErrTruncated {
return 0, errors.Trace(err)
}
}
return uintX, nil
}