public void ProcessUnOp(CalculatorUnOperations op) { input = input ?? 0; switch (op) { case CalculatorUnOperations.Invert: input = -input; break; case CalculatorUnOperations.Reciprocal: if (input.Value == 0) { ComputationError?.Invoke(this, "Division by Zero"); } else { input = 1 / input; } break; case CalculatorUnOperations.Sqr: input = Math.Pow(input.Value, 2); break; case CalculatorUnOperations.Sqrt: input = Math.Sqrt(input.Value); break; case CalculatorUnOperations.Backspace: if (input < 10) { input = 0; } else { string line = input.Value.ToString().Remove(input.Value.ToString().Length - 1); input = Convert.ToDouble(line); } break; } didUpdateValue?.Invoke(this, input.Value, fractionDigits ?? 0); }
public void TransformInput(CalculatorTransformation t) { input = input ?? 0; switch (t) { case CalculatorTransformation.Negate: input = -input; break; case CalculatorTransformation.Percent: input /= 100; break; case CalculatorTransformation.Sqr: input *= input; break; case CalculatorTransformation.Sqrt: if (input.HasValue && input.Value >= 0) { input = Math.Sqrt(input ?? 0); } else { ComputationError.Invoke(this, "Negative Square"); } break; case CalculatorTransformation.Inverse: if (input.HasValue && input.Value != 0) { input = 1 / input; } else { ComputationError.Invoke(this, "Division by Zero"); } break; } DidUpdateValue?.Invoke(this, input.Value, fractionDigits); }
public void Compute() { switch (this.op) { case CalculatorOperation.Add: result = result + input; DidUpdateValue?.Invoke(this, result.Value, 0); ResetInput(); break; case CalculatorOperation.Div: if (input.HasValue && input.Value != 0) { result = result / input; DidUpdateValue?.Invoke(this, result.Value, 0); ResetInput(); } else { ComputationError?.Invoke(this, "Division by Zero"); } break; } }
public void Compute() { switch (op) { case CalculatorOperations.Add: result = result + input; break; case CalculatorOperations.Sub: result = result - input; break; case CalculatorOperations.Mul: result = result * input; break; case CalculatorOperations.Div: if (input.HasValue && input.Value == 0) { ComputationError?.Invoke(this, "Division by Zero"); return; } else { result = result / input; } break; case CalculatorOperations.Percent: result = result * input / 100; break; } didUpdateValue?.Invoke(this, result.Value, 0); input = null; }