Я не уверен, почему у вас есть Convert.ToDecimal (0,250). Зачем преобразовывать число с плавающей запятой (0,250) в десятичную во время выполнения? Почему бы просто не использовать десятичный литерал (например, 0,25M)? Как отметили другие люди, вам нужно привести результаты деления к типу int, например:
decimal testDecimal = 5M;
int times = (int) (testDecimal / 0.25M);
Assert.AreEqual(20, times);
Кроме того, как отметили другие люди, вы можете подумать о том, как вы преобразуете десятичное значение в целое. Хотите ли вы поведение по умолчанию (что вы получаете от простого приведения), или вы хотите округлять вверх, округлять вниз, округлять до четности и т. Д.? В этом случае, поскольку деление дает интегральный результат, это не имеет значения, но в общем случае вам нужно подумать над этим.
Кстати, причина возникновения ошибки в этом коде:
int times = (int) testDecimal / Convert.ToDecimal(0.250);
означает, что вы приводите testDecimal (5.0M) к int (5). Затем вы делите его на десятичную (0,25M), что дает десятичную (20,0M). Наконец, вы пытаетесь присвоить это десятичное число целому числу, и компилятор сообщает об ошибке.
НТН