У меня есть переменная типа float, у которой после запятой много цифр. Мне хотелось бы ограничить её до одного знака после запятой. Как это сделать, заранее спасибо.
Судя по вашему комментарию, вы не совсем верно используете метод.
Mathf.Round() округляет значение до указанного количества знаков.
Time.deltaTime - возвращает время, потраченное на обработку кадра.
В итоге вы получаете следующую картину:
1. Объявляете переменную равную 0.
2. Прибавляете к ней deltaTime(а это очень малая величина)
3. Округляете переменную времени до одного знака после запятой (напомню, что ноль + очень малая величина = очень малая величина). Т.е. вы пытаетесь округлить 0.000031 до десятичных. В итоге вы получаете ноль и назначаете его в переменную времени. И дальше по кругу.
Надеюсь, я объяснил в чём проблема) Теперь о решении:
Вам нужно всегда хранить текущее время (вашу "second") целиком. А результат округления назначать в отдельную переменную и именно этот результат отображать. Т.е. примерно так:
float second = 0;
void Update()
{
second += Time.deltaTime;
float cashSecond = Mathf.Round(second, 1);
Debug.Log (cashsecond);
}
Используйте Math.Round
Math.Round(floatName, 1);
Документация
Ограничивать при вычислении нет смысла — ведь у двоичных дробей (а float представляет собой именно двоичную дробь) нет десятичных цифр.
Если вам нужно лишь вывести значение с 1 десятичной цифрой, используйте форматную строку. Например:
Console.WriteLine($"{f:0.0}");
или для старых версий языка
Console.WriteLine("{0:0.0}", f);
Или используйте формат 0.#, если вы не хотите выводить нулевую дробную часть.
Если вы реально хотите работать с десятичными цифрами, используйте не float, а decimal. В нём округление до одной десятичной цифры записывается так:
decimal.Round(d, 1)
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости