Лучший способ сделать это - использовать функцию. Он не должен выглядеть точно так, но:
class Whatever
{
private double basePower = 5000;
public int numPowerUps = 5;
public double GetActualPower()
{
return basePower + (numPowerUps * basePower * 0.1);
}
}
Просто измените numPowerUps обратно в 0, когда они закончатся. Таким образом, он выглядит очень аккуратно.
В сторону:
Причина, по которой не работает из-за того, что добавление и вычитая проценты не работает. Например:
1. What is 10% of 100? --> 10
2. Add that to the 100 --> 110
3. What is 10% of 110? --> 11
4. Subtract that from 110 --> 99
Вы всегда будете на 99% от вашего первоначального значения. Если вы действительно хотите взять ярлык, вы могли бы вместо того, чтобы сделать это:
1. What is 10% of 100? --> 10
2. Add that to the 100 --> 110
3. What is (100/11) = 9.09090909...% of 110? --> 10
4. Subtract that from 110 --> 100
Но тогда вы потенциально подвержены плавающей ошибки точки. Функциональный способ сделать это не только более аккуратный и понятный, но и потенциально менее подверженный ошибкам.
Ваш комментарий к сообщению coobird - это именно то, что я пытаюсь исправить. –
@ cellis5078 - Лучший способ сделать это - вспомнить, к чему он должен вернуться, сохраняя это * и не меняя его *. И когда вы хотите увидеть, что такое «приведенное в действие» значение, выполните вычисления. Это полезно по нескольким причинам: это более аккуратно, невозможно потерять информацию о том, сколько у них бонусов (так как вы тоже это сохраняете), и у него не будет ошибок с плавающей запятой. – Smashery
+1, хорошее объяснение –