Округление float с точностью до 0.5

242
04 сентября 2021, 14:50

Каким образом можно округлять значение float после точки к 5?

Пример:

value.23 = Целое значение не меняется, после точки 5.
value.85 = Целое увеличивается на 1, после точки 5,

Отрицательных значений не предусмотрено.

Answer 1

Пример из вопроса мною был умышленно проигнорирован т.к. имеет весьма странный вид:

value.85 = +value.5

непонятно что это означает.

Вот это решение должно сработать (округляет всегда в большую сторону, в т.ч. минусовые числа. Как правильно обрабатывать минусовые числа в вопросе указано небыло):

Math.Ceiling(value / 0.5) * 0.5;

тестовый код:

var inputs = new[] { -1.4, -1.45, -1.4666666, -1.0, -1.6, 1.4, 1.45, 1.466666666, 1.0, 1.6 };
foreach (var value in inputs)
{
    Console.WriteLine("{0} => {1}", input, Math.Ceiling(value / 0.5) * 0.5);
}
Console.ReadKey();

результат:

-1,4 => -1
-1,45 => -1
-1,4666666 => -1
-1 => -1
-1,6 => -1,5
1,4 => 1,5
1,45 => 1,5
1,466666666 => 1,5
1 => 1
1,6 => 2
READ ALSO
C# Передача ValueMember из DataGridViewComboBoxColumn в таблицу БД как ID

C# Передача ValueMember из DataGridViewComboBoxColumn в таблицу БД как ID

Добавляю столбец ProductComboBox в datagridview и подгружаю значения из таблицы d__ProductВсе выводит правильно

131
Почему эти два куска кода не одно и то же?

Почему эти два куска кода не одно и то же?

Вот расписанный по операциям код - он работает

183
Медленно качаются FileStream'ы из MS SQL

Медленно качаются FileStream'ы из MS SQL

В общем, есть метод, который шлет запрос к БД и выкачивает 2 файла весом ~150мбТ

104
передача данных между combobox'ами разных форм

передача данных между combobox'ами разных форм

Подскажите как передать данные между комбобоксами с главной формы на дочернюю

121