@Click_01215

Как в if проверить что fillAmount = 1.0f?

if (ProgressBarRareCoffee.fillAmount = 1.0f)
        {
            ProgressBarRareCoffee.fillAmount -= 1.0f;
        }


error CS0029: Cannot implicitly convert type 'float' to 'bool'
  • Вопрос задан
  • 173 просмотра
Решения вопроса 1
@Click_01215 Автор вопроса
mopsicus @mopsicus

Поучить C# немного.
И заменить один знак = на два в условии.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Voland69
Сравнивать числа с плавающей точкой через оператор == неверно, поскольку многие рациональные числа в формате float (и double тоже) не представимы точно. Поэтому можно наблюдать ситуацию, когда, к примеру, ожидаемое 3 == 3 вернет false, поскольку в одном операнде на самом деле 2.999998 а во втором 3.000004.
Если Вы знаете ожидаемый порядок чисел, неплохим выходом будет сравнение разницы чисел с некоторой величиной точности.
Что-то вроде:
bool IsFpNumsEqual(float a, float b, float eps = 1.0E-5f) => Math.Abs(a - b) < eps;

За подробностями прошу в статью на Хабре
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы