public override CompileResult Execute(IEnumerable <FunctionArgument> arguments, ParsingContext context) { ValidateArguments(arguments, 2); var number = ArgToDecimal(arguments, 0, context.Configuration.PrecisionAndRoundingStrategy); var significance = ArgToDecimal(arguments, 1); if (RoundingHelper.IsInvalidNumberAndSign(number, significance)) { return(CreateResult(eErrorType.Num)); } return(CreateResult(RoundingHelper.Round(number, significance, RoundingHelper.Direction.Up), DataType.Decimal)); }
public override CompileResult Execute(IEnumerable <FunctionArgument> arguments, ParsingContext context) { ValidateArguments(arguments, 1); var number = ArgToDecimal(arguments, 0); var significance = (arguments.Count() > 1) ? ArgToDecimal(arguments, 1) : 1; var mode = (arguments.Count() > 2) ? ArgToDecimal(arguments, 2) : 0d; if (RoundingHelper.IsInvalidNumberAndSign(number, significance)) { return(CreateResult(eErrorType.Num)); } return(CreateResult(RoundingHelper.Round(number, significance, mode != 0d ? RoundingHelper.Direction.Up : RoundingHelper.Direction.AlwaysUp), DataType.Decimal)); }