Мне нужно отображать рейтинги, и для этого мне нужны следующие приращения:
Если число 1,0, оно должно быть равно 1
Если число 1,1 должно быть равно 1
Если число 1,2 должно быть равно 1
Если число 1,3 должно быть равно 1,5
Если число 1,4 должно быть равно 1.5
Если число 1,5 должно быть равно 1,5
Если число 1,6 должно быть равно 1,5
Если число 1,7 должно быть равно 1,5
Если число 1,8 должно быть равно 2,0
Если число 1,9 должно быть равно 2.0
Если число 2.0 должно быть равно 2.0
Если число 2.1 должно быть равно 2.0
и так далее ...
Есть ли простой способ вычислить требуемые значения?
Ответы:
Умножьте свой рейтинг на 2, затем округлите с помощью
Math.Round(rating, MidpointRounding.AwayFromZero)
, затем разделите полученное значение на 2.Math.Round(value * 2, MidpointRounding.AwayFromZero) / 2
источник
Умножить на 2, округлить, затем разделить на 2
если вам нужен ближайший квартал, умножьте на 4, разделите на 4 и т. д.
источник
Вот несколько написанных мной методов, которые всегда будут округлять любое значение в большую или меньшую сторону.
источник
Есть несколько вариантов. Если производительность вызывает беспокойство, проверьте их, чтобы увидеть, какой из них работает быстрее всего в большом цикле.
источник
источник
Похоже, вам нужно округлить до 0,5. Я не вижу
round
в C # API версии, которая бы это делала (одна версия требует округления до ряда десятичных цифр, что не одно и то же).Предполагая, что вам нужно иметь дело только с целыми числами, равными десятым, этого достаточно для вычисления
round (num * 2) / 2
. Если вы используете произвольно точные десятичные дроби, это становится сложнее. Будем надеяться, что нет.источник
У меня тоже были трудности с этой проблемой. Я кодирую в основном ActionScript 3.0, который является базовым кодом для платформы Adobe Flash, но есть сходства на языках:
Решение, которое я придумал, следующее:
Вот и все. Обратите внимание на использование «чисел» и «целых чисел» и способ их обработки.
Удачи!
источник
источник
Правильный способ сделать это:
источник