Piszę wniosek, który wymaga zaokrąglenia etykiet do najbliższego "miły" numer. Podam poniższy kod, żeby to zademonstrować, ale moim problemem jest to, że użyłem serii innych znaków if, aby znaleźć ten numer, ale nie mogę być pewien górnego limitu, więc nie jest to dobra strategia. Czy są jakieś znane algorytmy lub zasoby, które mogłyby mi pomóc?runda do najbliższego miłego numeru
if (diff <= 1) {
roundAmount = 0.2;
} else if (diff <= 5) {
roundAmount = 1;
} else if (diff <= 10) {
roundAmount = 2;
} else if (diff <= 25) {
roundAmount = 5;
} else if (diff <= 50) {
roundAmount = 10;
} else if (diff <= 100) {
roundAmount = 20;
} else if (diff <= 250) {
roundAmount = 50;
} else if (diff <= 500) {
roundAmount = 100;
} else if (diff <= 1000){
roundAmount = 200;
} etc...
można zastosować tylko algorytm, jeśli można określić szczególne przepisy dotyczące tego, co „miły” zaokrąglania faktycznie * to *. Czy masz na myśli takie zasady? Trudno powiedzieć z twojego opublikowanego kodu. – Qwerky
Jak to zaokrąglanie, czyli jak można zdefiniować te "ładne" liczby? Na przykład: 51 zostanie zaokrąglone do 20 (czy "roundAmount" to fajna liczba?), Podczas gdy 50 jest zaokrąglone do 10? – Thomas
W tym momencie chciałbym, aby zaokrąglenie było piątą z następnej najwyższej, ładnej liczby. Bardziej czytelnym przykładem może być to, że jeśli mam numery 1,2, 1,9, 3,65, 4,1, 4,67, chciałbym, aby etykiety narysowane na 1, 2, 3, 4, 5. – user650309