Количество цифр в строках с числами
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)); |
Надо уточнить, так как если речь идет о пользовательской нумерации, то вы волны ее хоть и со знаковой начинать, с отрицательных чисел. А если речь идет о поле с автоинкрементом, то нумерация в нем по умолчанию начинается с 1, так как с нуля не выгодно для контроля.
Самое малое поле под номер это TINYINT (под поле отводится один байт), которое может принять значения максимум от 0 до 255 (2 в степени 8, если без знаковые значения), то есть максимальная длина поля, это три знака. Самое большое, это BIGINT (8 байт) - от 0 до 18446744073709551615 без знаковых значений. Вот эта суть по идее и заложена в задание, а иначе зачем цикл, получается ответ в самом условии уже дан. |
Из предположения, что строки нумеруются автоинкрементом с единицы, и пока ещё не удалялись:
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));
|
Alexandroppolus,
очень расточительная база у вас получается. |
laimas,
это почему? |
Цитата:
|
laimas,
я думаю, тут вопрос был, сколько всего понадобится цифр для строкового представления (по основанию 10) значений автоинкрементного id. Трудно что-то другое представить. Само по себе понятие "цифра" - это разновидность символов, то есть явно связано со строками. |
Цитата:
|
:)
var str = "";
for (var i=0; str.length<2775; i++) {str+=i}
alert(--i)
|
| Часовой пояс GMT +3, время: 08:21. |