Как ограничить вывод значения

342
08 марта 2018, 08:48

У меня есть переменная типа float, у которой после запятой много цифр. Мне хотелось бы ограничить её до одного знака после запятой. Как это сделать, заранее спасибо.

Answer 1

Судя по вашему комментарию, вы не совсем верно используете метод.
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);
}
Answer 2

Используйте Math.Round

Math.Round(floatName, 1);

Документация

Answer 3

Ограничивать при вычислении нет смысла — ведь у двоичных дробей (а float представляет собой именно двоичную дробь) нет десятичных цифр.

Если вам нужно лишь вывести значение с 1 десятичной цифрой, используйте форматную строку. Например:

Console.WriteLine($"{f:0.0}");

или для старых версий языка

Console.WriteLine("{0:0.0}", f);

Или используйте формат 0.#, если вы не хотите выводить нулевую дробную часть.

Если вы реально хотите работать с десятичными цифрами, используйте не float, а decimal. В нём округление до одной десятичной цифры записывается так:

decimal.Round(d, 1)
READ ALSO
Ошибка при считывании файла ресурсов WinForms C#

Ошибка при считывании файла ресурсов WinForms C#

При загрузке, даже стандартного WindowsForm, ничего еще не меняя, уже вылезает ошибка, как от нее избавиться? И почему она вылезает, если ничего...

301
Как получить ID больше, чем у 50 видео?

Как получить ID больше, чем у 50 видео?

Здравствуйте! Пытаюсь получить идентификаторы более, чем у 50 роликов, используя nextPageTokenНо проблема в том, что каждый раз в переменную ids добавляются...

283
Передача данных из класса в textBox

Передача данных из класса в textBox

Есть программа которая сравнивает строки по датеНеобходимо чтобы в textBox отображался процесс работы программы, а именно выводились найденные...

310
Поиск и вывод данных из list C#

Поиск и вывод данных из list C#

Имеется таблица xlsx с тремя столбцами, из нее через программу необходимо найти значения "ВНИМАНИЕ" из первого столбца и вывести список с прилегающими...

299