Пользователь вводит вероятность и сумму ставки(оба натуральные числа). Вывести выигрыш нужно число с плавающей точкой, так же записать в базу данных число с плавающей точкой. О
if (70 <= number2 && number2 < 80)
{
if (value + 12 <= number2)
{
Win(value + 12, number2, Convert.ToDouble(number1 * (100 + 100 - number2) / 100));
}
else
{
if (value <= number2) Loose(value+12);
else Loose(value);
}
}
static void Win(int value, int number2, double win)
{
string query1 = "UPDATE users SET balance = " + Convert.ToDouble(money - win) + " WHERE userid=" + userid;
MySqlCommand comm1 = new MySqlCommand(query1, conn);
comm1.ExecuteNonQuery();
if (value <= number2)
{
vk.Messages.Send(new MessagesSendParams
{
ChatId = chat_id,
Message = "Молодец, ты выиграл " + win + "! Число: " + value
});
}
else
{
vk.Messages.Send(new MessagesSendParams
{
ChatId = chat_id,
Message = "Молодец, ты выиграл " + win + "! Число: " + value
});
}
}
Думаю, проблема в строке
Convert.ToDouble(number1 * (100 + 100 - number2) / 100)
Смотрите, что происходит: сначала выполняется целочисленное деление, и вычисляется целочисленный результат number1 * (100 + 100 - number2) / 100. Затем этот, уже округлённый до целого числа результат конвертируется в double. Но от этого у целого числа, понятно, не появится дробная часть.
Чтобы получить дробный результат, нужно проводить вычисления в дробных числах. Например, так:
Win(value + 12, number2, number1 * (100 + 100 - number2) / 100.0);
Сборка персонального компьютера от Artline: умный выбор для современных пользователей