Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.03.2017, 04:29
Аспирант
Отправить личное сообщение для weirdjava Посмотреть профиль Найти все сообщения от weirdjava
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 01.03.2017, 07:14
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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

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

Вот эта суть по идее и заложена в задание, а иначе зачем цикл, получается ответ в самом условии уже дан.
Ответить с цитированием
  #3 (permalink)  
Старый 01.03.2017, 09:51
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 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));
Ответить с цитированием
  #4 (permalink)  
Старый 01.03.2017, 10:03
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Alexandroppolus,
очень расточительная база у вас получается.
Ответить с цитированием
  #5 (permalink)  
Старый 01.03.2017, 10:21
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

laimas,

это почему?
Ответить с цитированием
  #6 (permalink)  
Старый 01.03.2017, 10:25
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Alexandroppolus
это почему
потому, что если имеется ввиду длина знаков в поле, то слишком мало в вашем ответе, ну а если имеется ввиду комбинации цифр, то вполне может быть. Остается только узнать, что же предполагается в задаче. )
Ответить с цитированием
  #7 (permalink)  
Старый 01.03.2017, 10:37
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

laimas,
я думаю, тут вопрос был, сколько всего понадобится цифр для строкового представления (по основанию 10) значений автоинкрементного id. Трудно что-то другое представить. Само по себе понятие "цифра" - это разновидность символов, то есть явно связано со строками.
Ответить с цитированием
  #8 (permalink)  
Старый 01.03.2017, 10:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Alexandroppolus
я думаю, тут вопрос был, сколько всего понадобится цифр для строкового представления (по основанию 10) значений автоинкрементного id.
Может быть, но если имеется ввиду длина значения отведенная под поле, а именно этим параметром характеризуется тип поля, тогда ответ неверный.
Ответить с цитированием
  #9 (permalink)  
Старый 01.03.2017, 10:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109


var str = "";
for (var i=0; str.length<2775; i++)  {str+=i}
alert(--i)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как и где задать цикл? Blondinka Events/DOM/Window 2 10.06.2014 15:29
водим четырёхзначное число, определить количество чётных цифр и вывести его на экран. Jhon Общие вопросы Javascript 1 04.06.2014 18:31
Регулярное выражение: узнать количество цифр. foker Общие вопросы Javascript 10 02.03.2013 00:46
Как получить количество дней до определенной даты beard Общие вопросы Javascript 3 24.06.2012 17:22
количество повторений в регулярном выражении mrWong Общие вопросы Javascript 2 10.02.2010 12:57