Проценты от процента
Есть 5 значений:
{1, 20.0%}
{2, 20.0%}
{3, 20.0%}
{4, 20.0%}
{5, 20.0%}
В сумме всегда должно быть 100.0%
Есть переменная в процентах - 41.0%
Нужно прибавить к значению 1, процент переменной от процента значения 1, к значению 1 и высчитать из остальных четырех значений в равной степени, что бы в сумме осталось 100.0%
Простой пример:
переменная 20
1 - 50
2 - 50
вычитаем из первого значения переменную и прибавляем к второму значению.
Получаем -
1 - 30
2 - 70
Как это сделать ?
static void Main(string[] args)
{
Dictionary<int, double> result = new();
Dictionary<int, double> dict = new Dictionary<int, double>
{
{ 0, 15 },
{ 1, 15 },
{ 2, 8 },
{ 3, 10 },
{ 4, 52 }
};
double total = 0;
double x = 41d;
double t = x / 4d;
foreach (var d in dict)
{
if (d.Key == 0)
{
double value = d.Value + (d.Value * x / 100);
result.Add(0, value);
}
if (d.Key == 1)
{
double value = d.Value - (d.Value * t / 100);
result.Add(1, value);
}
if (d.Key == 2)
{
double value = d.Value - (d.Value * t / 100);
result.Add(2, value);
}
if (d.Key == 3)
{
double value = d.Value - (d.Value * t / 100);
result.Add(3, value);
}
if (d.Key == 4)
{
double value = d.Value - (d.Value * t / 100);
result.Add(4, value);
}
}
foreach (var r in result)
{
total += r.Value;
Console.WriteLine($"{r.Key} {r.Value}");
}
Console.WriteLine($"Total - {total}");
Console.ReadLine();
}
0 21,15
1 13,4625
2 7,18
3 8,975
4 46,67
Total - 97,4375
Источник: Stack Overflow на русском