Zefirot
@Zefirot

Как лучше округлять float?

Знаю тема заезжена, но где не смотрю решение и везде решение идет с помощью превращения в decimal а потом в float, в итоге у меня вот такие два метода получаются, один float округляет, другой строковой флоат округляет, то есть методы возвращают из float или string округлённый float
public float FloatRoundFromFloat(float f){
  decimal d = (decimal)Math.Round(f, 4); f = (float)d;
  return f;
  }
public float FloatRoundFromString(string s){
  decimal d = Math.Round(Convert.ToDecimal(s.Replace(',', '.')), 4);
  float f = (float)d;
  return f;
  }

Это максимальные решения? Правильные ли такие методы, либо что посоветуете лучше, дело в том что у меня много где они используются, хотелось бы чтобы эти методы были бы наиболее производительнее...
  • Вопрос задан
  • 450 просмотров
Решения вопроса 2
freeExec
@freeExec
Участник OpenStreetMap
Зачем использовать decimal не понятно
Возвращать обратно float чтобы что, получить вместо 0,0004 = 0,0003999999?
Ответ написан
Камон. Лучший способ:
public static float Round(float x) =>
  Math.Round(x, 4);

Но лучше использовать double.
А если вам нужна точность decimal - используйте его на всех уровнях
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@K1ald
Мой "код округления" из Unity проекта(пример):

public float countdown = 60;

        if (countdown > 0)
        {
            countdown -= Time.deltaTime;
            timerText.text = countdown.ToString();
            timerText.text = Mathf.Round(countdown).ToString();
        }


Код отвечает за отчет времени.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы