Exemplo n.º 1
0
        public void Compute()
        {
            switch (currentOp)
            {
            case Operation.Add:
                right = left + right;
                left  = null;
                break;

            case Operation.Sub:
                right = right - left;
                left  = null;
                break;

            case Operation.Mul:
                right = left * right;
                left  = null;
                break;

            case Operation.Div:
                if (left == 0)
                {
                    CalculationError?.Invoke(this, "Division by 0!");
                    return;
                }
                right = right / left;
                left  = null;
                break;
            }

            DidUpdateValue?.Invoke(this, right.Value, precision);
        }
Exemplo n.º 2
0
        public void Compute()
        {
            if (!(left.HasValue && currentOp.HasValue))
            {
                return;
            }

            switch (currentOp)
            {
            case Operation.Add:
                right = right + left;
                break;

            case Operation.Sub:
                right = right - left;
                break;

            case Operation.Mul:
                right = right * left;
                break;

            case Operation.Div:
                if (left == 0)
                {
                    CalculationError?.Invoke(this, "Division by 0!");
                    return;
                }
                right = right / left;
                break;
            }

            DidUpdateValue?.Invoke(this, right.Value, precision);
            left      = 0;
            currentOp = null;
        }
Exemplo n.º 3
0
 public int Divide(int x, int y)
 {
     if (0 == y)
     {
         var error = new CalculationError("Divide", "被除数y不能为零!");
         throw new FaultException <CalculationError>(error, error.Message);
     }
     return(x / y);
 }
Exemplo n.º 4
0
        public void Compute()
        {
            switch (currentOp)
            {
            case Operation.Add:
                right = left + right;
                left  = null;
                break;

            case Operation.Sub:
                right -= left;
                left   = null;
                break;

            case Operation.Mul:
                right = left * right;
                left  = null;
                break;

            case Operation.Div:
                if (left == 0)
                {
                    CalculationError?.Invoke(this, "Division by 0!");
                    return;
                }
                right /= left;
                left   = null;
                break;

            case Operation.Pow:
                right *= right;
                left   = null;
                break;

            case Operation.Sqrt:
                right = Math.Sqrt((double)right);
                left  = null;
                break;

            case Operation.Drob:
                right = 1 / right;
                left  = null;
                break;

            case Operation.Sin:
                right = Math.Sin((double)right);
                left  = null;
                break;

            case Operation.Cos:
                right = Math.Cos((double)right);
                left  = null;
                break;
            }
            DidUpdateValue?.Invoke(this, right.Value, precision);
        }
Exemplo n.º 5
0
        public void Compute()
        {
            switch (currentOp)
            {
            case Operation.Add:
                right        = left + right;
                left         = null;
                precision    = 0;
                decimalPoint = false;
                break;

            case Operation.Sub:
                right        = right - left;
                left         = null;
                precision    = 0;
                decimalPoint = false;
                break;

            case Operation.Mul:
                right        = left * right;
                left         = null;
                precision    = 0;
                decimalPoint = false;
                break;

            case Operation.Div:
                if (left == 0)
                {
                    CalculationError?.Invoke(this, "Division by 0!");
                    return;
                }
                right        = right / left;
                left         = null;
                precision    = 0;
                decimalPoint = false;
                break;

            case Operation.Pow:
                right        = Math.Pow((double)right, (double)left);
                left         = null;
                precision    = 0;
                decimalPoint = false;
                break;

            default:
                currentOp    = null;
                precision    = 0;
                decimalPoint = false;
                return;
            }


            DidUpdateValue?.Invoke(this, right.Value, precision);
        }
Exemplo n.º 6
0
        public void Compute()
        {
            switch (currentOp)
            {
            case Operation.Add:
                right = left + right;
                left  = null;
                break;

            case Operation.Sub:
                right = right - left;
                left  = null;
                break;

            case Operation.Mul:
                right = left * right;
                left  = null;
                break;

            case Operation.Div:
                if (left == 0)
                {
                    CalculationError?.Invoke(this, "Деление на 0!");
                    return;
                }
                right = right / left;
                left  = null;
                break;

            case Operation.Pow:
                right = Math.Pow((double)right, (double)left);
                left  = null;
                break;
            }
            left = right;
            DidUpdateValue?.Invoke(this, right.Value, precision);
            right     = null;
            currentOp = null;
        }
        public void Compute()
        {
            switch (currentOp)
            {
            case Operation.Add:
                right = left + right;
                left  = null;
                break;

            case Operation.Sub:
                right = right - left;
                left  = null;
                break;

            case Operation.Mul:
                right = left * right;
                left  = null;
                break;

            case Operation.Div:
                if (left == 0)
                {
                    CalculationError?.Invoke(this, "Division by 0!");
                    return;
                }
                right = right / left;
                left  = null;
                break;

            case Operation.Mod:
                if (left == 0)
                {
                    CalculationError?.Invoke(this, "Division by 0!");
                    return;
                }
                right = right % left;
                left  = null;
                break;

            case Operation.Sqrt:
                if (right < 0)
                {
                    CalculationError?.Invoke(this, "No");
                    return;
                }
                else
                {
                    right = Math.Sqrt(right.Value);
                }
                left = null;
                break;

            case Operation.Sqr:
                right = Math.Pow(right.Value, 2);
                left  = null;
                break;

            case Operation.Ln:
                if (right <= 0)
                {
                    CalculationError?.Invoke(this, "No");
                    return;
                }
                right = Math.Log(right.Value);
                left  = null;
                break;

            //case Operation.Log10:
            //    if (right <= 0)
            //    {
            //        CalculationError?.Invoke(this, "No");
            //        return;
            //    }
            //    right = Math.Log10(right.Value);
            //    left = null;
            //    break;
            case Operation.Pow:
                right = Math.Pow(right.Value, left.Value);
                left  = null;
                break;
            }
            DidUpdateValue?.Invoke(this, right.Value, precision);
            precision    = 0;
            decimalPoint = false;
        }