本文整理汇总了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
}