Калькулятор на ASP.Net Core MVC C#
Цитата: Oleg от 28.08.2021, 14:26Всем привет!
Занимаюсь созданием калькулятора на Asp.Net с паттерном MVC.
Вот мой контроллер в котором я произвожу исчисления:[spoiler title="Код"]public class CalcController : Controller { public IActionResult IndexCalculator() { return View(new CalcModel()); } [HttpPost] public async Task<IActionResult> IndexCalculator(CalcModel model) { ModelState.Clear(); switch (model.calculationMethod) { case CalculationMethod.Addition: model.Result = model.FirstNumber + model.SecondNumber; break; case CalculationMethod.Subtraction: model.Result = model.FirstNumber - model.SecondNumber; break; case CalculationMethod.Multiplication: model.Result = model.FirstNumber * model.SecondNumber; break; case CalculationMethod.Division: if (model.SecondNumber == 0) break; else model.Result = model.FirstNumber / model.SecondNumber; break; } return View(model); }[/spoiler]И вот моя модель:[spoiler title="Код"]
public class CalcModel { [Required(ErrorMessage = "Поле должно быть установлено")] public decimal FirstNumber { get; set; } [Required(ErrorMessage = "Поле должно быть установлено")] public decimal SecondNumber { get; set; } [Required(ErrorMessage = "Поле должно быть установлено")] public decimal Result { get; set; } public CalculationMethod calculationMethod { get; set; } public enum CalculationMethod { Addition = '+', Subtraction = '-', Multiplication = '*', Division = '/', X2 = 'x' } }[/spoiler]Проблема в том что я хочу добавить вычисление квадратного корня:
case CalculationMethod.X2: model.Result = Math.Sqrt(model.FirstNumber); break;И когда я его добавляю в свой switch case я получаю ошибку "Аргумент 1: не удается преобразовать из "decimal" в "double"."
Помогите пожалуйста решить эту проблему.
Возможно нужно как то создать отдельный метод и вызывать его в switch case?
Буду благодарен за помощь! Всем хорошего дня)
[MNotice]Убирайте код под спойлер[/MNotice]
Всем привет!
Занимаюсь созданием калькулятора на Asp.Net с паттерном MVC.
Вот мой контроллер в котором я произвожу исчисления:
public class CalcController : Controller
{
public IActionResult IndexCalculator()
{
return View(new CalcModel());
}
[HttpPost]
public async Task<IActionResult> IndexCalculator(CalcModel model)
{
ModelState.Clear();
switch (model.calculationMethod)
{
case CalculationMethod.Addition:
model.Result = model.FirstNumber + model.SecondNumber;
break;
case CalculationMethod.Subtraction:
model.Result = model.FirstNumber - model.SecondNumber;
break;
case CalculationMethod.Multiplication:
model.Result = model.FirstNumber * model.SecondNumber;
break;
case CalculationMethod.Division:
if (model.SecondNumber == 0)
break;
else
model.Result = model.FirstNumber / model.SecondNumber;
break;
}
return View(model);
}
public class CalcModel
{
[Required(ErrorMessage = "Поле должно быть установлено")]
public decimal FirstNumber { get; set; }
[Required(ErrorMessage = "Поле должно быть установлено")]
public decimal SecondNumber { get; set; }
[Required(ErrorMessage = "Поле должно быть установлено")]
public decimal Result { get; set; }
public CalculationMethod calculationMethod { get; set; }
public enum CalculationMethod
{
Addition = '+',
Subtraction = '-',
Multiplication = '*',
Division = '/',
X2 = 'x'
}
}
case CalculationMethod.X2: model.Result = Math.Sqrt(model.FirstNumber); break;
И когда я его добавляю в свой switch case я получаю ошибку "Аргумент 1: не удается преобразовать из "decimal" в "double"."
Помогите пожалуйста решить эту проблему.
Возможно нужно как то создать отдельный метод и вызывать его в switch case?
Буду благодарен за помощь! Всем хорошего дня)
Комментарий модератора:
Убирайте код под спойлер