Muszę wyświetlać oceny, a do tego potrzebuję następujących przyrostów:
Jeśli liczba wynosi 1,0, to powinno być równe 1
Jeśli liczba wynosi 1,1, powinno być równe 1
Jeśli liczba wynosi 1,2, powinno być równe 1
Jeśli liczba wynosi 1,3, powinno być równe 1,5
Jeśli liczba wynosi 1,4, powinno być równe 1,5
Jeśli liczba wynosi 1,5, to powinno być równe 1,5
Jeśli liczba wynosi 1,6, to powinno być równe 1,5
Jeśli liczba wynosi 1,7, to powinno być równe 1,5
Jeśli liczba wynosi 1,8, to powinno być równe 2,0
Jeśli liczba wynosi 1,9, to 2,0
Jeśli liczba wynosi 2,0, powinna być równa 2,0
Jeśli liczba wynosi 2,1, powinna być równa 2,0
i tak dalej ...
Czy istnieje prosty sposób obliczenia wymaganych wartości?
Odpowiedzi:
Pomnóż swoją ocenę przez 2, zaokrąglij używając
Math.Round(rating, MidpointRounding.AwayFromZero)
, a następnie podziel tę wartość przez 2.Math.Round(value * 2, MidpointRounding.AwayFromZero) / 2
źródło
Pomnóż przez 2, zaokrąglij, a następnie podziel przez 2
jeśli chcesz najbliższy kwartał, pomnóż przez 4, podziel przez 4 itd
źródło
Oto kilka metod, które napisałem, które zawsze zaokrągla w górę lub w dół do dowolnej wartości.
źródło
Istnieje kilka opcji. Jeśli zależy Ci na wydajności, przetestuj je, aby zobaczyć, która działa najszybciej w dużej pętli.
źródło
źródło
Wygląda na to, że musisz zaokrąglić do najbliższej 0,5. Nie widzę wersji
round
w C # API, która to robi (jedna wersja wymaga zaokrągleń do liczby cyfr dziesiętnych, co nie jest tym samym).Zakładając, że masz do czynienia tylko z całkowitymi liczbami dziesiątych, wystarczy to obliczyć
round (num * 2) / 2
. Jeśli używasz dowolnie dokładnych liczb dziesiętnych, sprawa jest trudniejsza. Miejmy nadzieję, że nie.źródło
Z tym problemem też miałem trudności. Koduję głównie w Actionscript 3.0, który jest podstawowym kodowaniem dla platformy Adobe Flash, ale są podobieństwa w językach:
Rozwiązanie, które wymyśliłem, jest następujące:
To wszystko. Zwróć uwagę na użycie „liczb” i „liczb całkowitych” oraz sposób ich przetwarzania.
Powodzenia!
źródło
źródło
Prawidłowy sposób to:
źródło