decimal выдаёт целое число (без запятой)
Пишу код для этой формулы.
Вопрос по отображению результата в decimal. Нужно, чтобы были знаки после запятой, а выдаёт просто 0.
Product - произведение.
Сложность в том, что некоторые операции требуют только double (степень - Math.Pow), в других нельзя этот double использовать (умножение). Запуталась в преобразованиях. Помогите, пожалуйста.
int product = 0; // тут int, т.к. нельзя умножать decimal
double Factorial = 1;
for (double i = 2; i <= 3; i++)
{
Factorial *= i;
double vnutriSkobok = Convert.ToDouble(1 - (1 / Factorial)); // double нужнен для Math.Pow
product = product * Convert.ToInt32(Math.Pow(vnutriSkobok, 2)); // double и decimal не умножает - ошибка
decimal Product = Convert.ToDecimal(product); // обратно, чтобы были знаки после запятой
label7.Text = Product.ToString();
Ответы (1 шт):
Автор решения: motpfofs
→ Ссылка
По моему ошибка была в том, что вы изначально инициализирвовали product нулём а потом перемножали его же на коэфициент, а ноль умноженный на что угодно - всё равно ноль.
Преобразовал немного ваш код:
decimal product = 1;
decimal Factorial = 1;
for (decimal i = 2; i <= 3; i++)
{
Factorial *= i;
decimal vnutriSkobok = 1 - (1 / Factorial); // double нужнен для Math.Pow
product = product * Convert.ToDecimal(Math.Pow((double)vnutriSkobok, 2)); // double и decimal не умножает - ошибка
label7.Text = product.ToString();
}
