Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Количество цифр в строках с числами (https://javascript.ru/forum/dom-window/67645-kolichestvo-cifr-v-strokakh-s-chislami.html)

weirdjava 01.03.2017 04:29

Количество цифр в строках с числами
 
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));

laimas 01.03.2017 07:14

Надо уточнить, так как если речь идет о пользовательской нумерации, то вы волны ее хоть и со знаковой начинать, с отрицательных чисел. А если речь идет о поле с автоинкрементом, то нумерация в нем по умолчанию начинается с 1, так как с нуля не выгодно для контроля.

Самое малое поле под номер это TINYINT (под поле отводится один байт), которое может принять значения максимум от 0 до 255 (2 в степени 8, если без знаковые значения), то есть максимальная длина поля, это три знака. Самое большое, это BIGINT (8 байт) - от 0 до 18446744073709551615 без знаковых значений.

Вот эта суть по идее и заложена в задание, а иначе зачем цикл, получается ответ в самом условии уже дан.

Alexandroppolus 01.03.2017 09:51

Из предположения, что строки нумеруются автоинкрементом с единицы, и пока ещё не удалялись:

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));

laimas 01.03.2017 10:03

Alexandroppolus,
очень расточительная база у вас получается.

Alexandroppolus 01.03.2017 10:21

laimas,

это почему?

laimas 01.03.2017 10:25

Цитата:

Сообщение от Alexandroppolus
это почему

потому, что если имеется ввиду длина знаков в поле, то слишком мало в вашем ответе, ну а если имеется ввиду комбинации цифр, то вполне может быть. Остается только узнать, что же предполагается в задаче. )

Alexandroppolus 01.03.2017 10:37

laimas,
я думаю, тут вопрос был, сколько всего понадобится цифр для строкового представления (по основанию 10) значений автоинкрементного id. Трудно что-то другое представить. Само по себе понятие "цифра" - это разновидность символов, то есть явно связано со строками.

laimas 01.03.2017 10:43

Цитата:

Сообщение от Alexandroppolus
я думаю, тут вопрос был, сколько всего понадобится цифр для строкового представления (по основанию 10) значений автоинкрементного id.

Может быть, но если имеется ввиду длина значения отведенная под поле, а именно этим параметром характеризуется тип поля, тогда ответ неверный.

рони 01.03.2017 10:45

:)
var str = "";
for (var i=0; str.length<2775; i++)  {str+=i}
alert(--i)


Часовой пояс GMT +3, время: 23:28.