01.03.2017, 04:29
|
Аспирант
|
|
Регистрация: 01.03.2017
Сообщений: 40
|
|
Количество цифр в строках с числами
function rowCount(digits) {
var p = 0, z = 9, r = 0;
while(digits > 0) {
r += z;
digits -= z * (++p);
z *= 10;
}
return r + digits / p;
}
alert(rowCount(2775));
Последний раз редактировалось weirdjava, 01.03.2017 в 14:32.
|
|
01.03.2017, 07:14
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Надо уточнить, так как если речь идет о пользовательской нумерации, то вы волны ее хоть и со знаковой начинать, с отрицательных чисел. А если речь идет о поле с автоинкрементом, то нумерация в нем по умолчанию начинается с 1, так как с нуля не выгодно для контроля.
Самое малое поле под номер это TINYINT (под поле отводится один байт), которое может принять значения максимум от 0 до 255 (2 в степени 8, если без знаковые значения), то есть максимальная длина поля, это три знака. Самое большое, это BIGINT (8 байт) - от 0 до 18446744073709551615 без знаковых значений.
Вот эта суть по идее и заложена в задание, а иначе зачем цикл, получается ответ в самом условии уже дан.
|
|
01.03.2017, 09:51
|
|
Профессор
|
|
Регистрация: 25.10.2016
Сообщений: 1,012
|
|
Из предположения, что строки нумеруются автоинкрементом с единицы, и пока ещё не удалялись:
function rowCount(digits) {
var p = 0, z = 9, r = 0;
while(digits > 0) {
r += z;
digits -= z * (++p);
z *= 10;
}
return r + digits / p;
}
alert(rowCount(2775));
|
|
01.03.2017, 10:03
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Alexandroppolus,
очень расточительная база у вас получается.
|
|
01.03.2017, 10:21
|
|
Профессор
|
|
Регистрация: 25.10.2016
Сообщений: 1,012
|
|
laimas,
это почему?
|
|
01.03.2017, 10:25
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Alexandroppolus
|
это почему
|
потому, что если имеется ввиду длина знаков в поле, то слишком мало в вашем ответе, ну а если имеется ввиду комбинации цифр, то вполне может быть. Остается только узнать, что же предполагается в задаче. )
|
|
01.03.2017, 10:37
|
|
Профессор
|
|
Регистрация: 25.10.2016
Сообщений: 1,012
|
|
laimas,
я думаю, тут вопрос был, сколько всего понадобится цифр для строкового представления (по основанию 10) значений автоинкрементного id. Трудно что-то другое представить. Само по себе понятие "цифра" - это разновидность символов, то есть явно связано со строками.
|
|
01.03.2017, 10:43
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Alexandroppolus
|
я думаю, тут вопрос был, сколько всего понадобится цифр для строкового представления (по основанию 10) значений автоинкрементного id.
|
Может быть, но если имеется ввиду длина значения отведенная под поле, а именно этим параметром характеризуется тип поля, тогда ответ неверный.
|
|
01.03.2017, 10:45
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
var str = "";
for (var i=0; str.length<2775; i++) {str+=i}
alert(--i)
|
|
|
|