Количество цифр в строках с числами
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, время: 23:28. |