Unity C# Вызов неоднозначен между следующими методами или свойствами: `System.Math.Round (double, int) 'и` System.Math.Round (decimal, int) - PullRequest
0 голосов
/ 31 января 2020

Это мой код. Я получаю сообщение об ошибке

Вызов неоднозначен между следующими методами или свойствами: System.Math.Round(double, int) и System.Math.Round(decimal, int)

Я знаю, что это связано с результатом неоднозначность операции между двойным и десятичным, но я понятия не имею, как получить только десятичную в результате.

int enemiesThisWave= Decimal.ToInt32(Math.Round(TotalEnemies * (percentForWave / 100), 1));
int enemiesForType = Decimal.ToInt32(Math.Round(lenghtList * (percentForType / 100), 1));

Ответы [ 2 ]

4 голосов
/ 31 января 2020

Один простой способ сделать это - привести одно из ваших значений к типу, который вы хотите вызвать:

int enemiesThisWave = Decimal.ToInt32(Math.Round(TotalEnemies * ((decimal)percentForWave / 100), 1));

или указать десятичное число для вашего значения 100:

int enemiesThisWave = Decimal.ToInt32(Math.Round(TotalEnemies * (percentForWave / 100m), 1));

Предполагая, TotalEnemies и percentForWave равны int

1 голос
/ 31 января 2020

Используйте Mathf.FloorToInt вместо:

int enemiesThisWave= Mathf.FloorToInt(TotalEnemies * percentForWave / 100f + 0.5f);
int enemiesForType = Mathf.FloorToInt(lenghtList * percentForType / 100f + 0.5f);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...