2015-05-11 5 views
1

Простой вопрос: как мне ограничивать большое количество, чтобы он оставался между 0-100. Для примера:Ограничение большого количества

8976382 превратило бы тоже 89

Моя попытка:

Math.min(Math.max(8976382, 1), 100) 
+0

откуда является источником ваших больших чисел? –

+0

это будет зависеть от типа отображения, которое вы хотите от одного места к другому. Это однородная, асимптотическая или что-то еще, например. – Dinesh

+0

'8976382% 100', похоже, работает неплохо. Есть ли проблемы с этим? – Shivam

ответ

2

Что у вас есть (метод min/max) не собирается превращать 8976382 в 89, но в 100 вместо.

Простой алгоритм (для положительных чисел так или иначе, и предполагая, что верхний конец диапазона является эксклюзивным, так что 0..99 включительно) будет:

while num >= 100: 
    num = int(num/10) 

Это должно быть легко конвертированы в любом процедурного языка , таких как Javascript:

var num = 8976382; 
while (num >= 100) { 
    num = Math.floor(num/10); 
} 
alert(num); 

, который дает вам 89 по запросу.

Другой вариант - использовать операцию подстроки для захвата первого (до) двух символов.

var num = 8976382; 
num = ("" + num).substr(0,2); 
alert(num); 

Если диапазон вы хотите на самом деле 0..100 включено в обоих концах используйте >, а не >= в первом растворе. В этом случае метод подстроки становится проблематичным, поскольку вам необходимо определить строки, начинающиеся с 100 специально.

+1

Я думаю, что это решение лучше. –

+0

Вы также можете сделать 'int (num/Math.pow (10, 2))'. Я не уверен, зачем вам нужен цикл while. –

+0

@Asad, примените это выражение к '8976382', и оно дает вам' 89763', а не _really_ между нулем и сотней. Идея цикла while в том, чтобы продолжать уменьшать число, пока вы не получите '100' или ниже. – paxdiablo

0

Похоже, что вы хотите, первые две цифры номера, если это число больше 100.

Так что я хотел бы сделать это, как это в Javascript:

var y = 8976382; 
var x = y < 100 ? y : parseInt((''+y).substring(0, 2)); 

И как это в Java :

int y = 8976382; 
int x = y < 100 ? y : Integer.parseInt(String.valueOf(y).substring(0, 2)); 
1

кажется вам просто нужны первые две цифры номера (исключающих 100). Если это так, вы можете получить эти первые две цифры, используя substr или другие методы манипулирования строкой javascript, такие как substring.

var num = 8976382; 
var result = ("" + num).substr(0,2); 

// Output => "89" 

Это работает, даже если у вас есть только одна цифра. Скажи:

var num = 3; 
var result = ("" + 3).substr(0, 2); 

// Output => "3" 

Позже, если вы хотите, чтобы преобразовать эту строку вывода на номер, используйте parseInt или просто добавить + приведенный выше код:

var num = 8976382; 
var result = +("" + 8976382).substr(0,2); 

// Output => 89 

ПРИМЕЧАНИЕ: Если есть возможность для отрицательных чисел, то рассмотрите добавление условия как if(num > 0).

2

Попробуйте:

+(8976382 + "").slice(0,2); 
Смежные вопросы