Простой вопрос: как мне ограничивать большое количество, чтобы он оставался между 0-100. Для примера:Ограничение большого количества
8976382 превратило бы тоже 89
Моя попытка:
Math.min(Math.max(8976382, 1), 100)
Простой вопрос: как мне ограничивать большое количество, чтобы он оставался между 0-100. Для примера:Ограничение большого количества
8976382 превратило бы тоже 89
Моя попытка:
Math.min(Math.max(8976382, 1), 100)
Что у вас есть (метод 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
специально.
Я думаю, что это решение лучше. –
Вы также можете сделать 'int (num/Math.pow (10, 2))'. Я не уверен, зачем вам нужен цикл while. –
@Asad, примените это выражение к '8976382', и оно дает вам' 89763', а не _really_ между нулем и сотней. Идея цикла while в том, чтобы продолжать уменьшать число, пока вы не получите '100' или ниже. – paxdiablo
x = 8976382;
y = parseInt((x+'').slice(0,2));
Похоже, что вы хотите, первые две цифры номера, если это число больше 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));
кажется вам просто нужны первые две цифры номера (исключающих 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)
.
Попробуйте:
+(8976382 + "").slice(0,2);
откуда является источником ваших больших чисел? –
это будет зависеть от типа отображения, которое вы хотите от одного места к другому. Это однородная, асимптотическая или что-то еще, например. – Dinesh
'8976382% 100', похоже, работает неплохо. Есть ли проблемы с этим? – Shivam