2013-03-28 8 views
9

Co chcę zrobić w zasadzie, to wziąć dowolną liczbę użytkownik ma wejście i zaokrąglić do kolejnej najbliższej liczby podzielnej przez X, z wyłączeniem 1.Następny najbliższej liczby podzielne przez X

IE (X = 300)

Wejście Wyjście = 1 = 300

wejściowe = 500 wyjściowy = 600

wejściowe = 841 wyjściowy = 900

Wejście Wyjście = 305 = 300

+9

Twój ostatni przykład jest sprzeczny z podanym wymogiem. –

+2

Czy nie powinien 305 dać w 600? Twoje pytanie mówi "następny największy numer". –

Odpowiedz

14

Wystarczy (całkowita) podzielić przez X, dodać jedną, a następnie pomnożyć przez X.

int output = ((input/x) + 1) * x; 
+0

Ups, naprawiono. – Blorgbeard

+2

Teraz to nie działa dla np. 300 – BrokenGlass

+0

Działa dobrze, dziękuję! – Laveer

2

Bazując na przykład zachowanie chciałbym zrobić coś takiego:

 
double GetNearestWholeMultiple(double input, double X) 
    { 
     var output = Math.Round(input/X); 
     if (output == 0 && input > 0) output += 1; 
     output *= X; 

     return output; 
    } 
Powiązane problemy