Показать сообщение отдельно
  #4 (permalink)  
Старый 29.10.2011, 14:15
Аспирант
Отправить личное сообщение для stopkran Посмотреть профиль Найти все сообщения от stopkran
 
Регистрация: 12.12.2009
Сообщений: 54

Я так предпочитаю работать с цифрами, а не с числами :-). Как-то так:

function digit_form (num, words) {
	
	num = (num < 10 ? '0' : '') + num;
	var forms = [2, 0, 1, 1, 1, 2, 2, 2, 2, 2], 
	dig = num.split('');
	dig.reverse();
	return num + ' ' + (1 == dig[1] ? words[2] : words[forms[Number(dig[0])]]);
} 

alert(digit_form(Math.round(10 / Math.random()), ['минута', 'минуты', 'минут']));


Так, может, медленнее и неправильнее, но зато код проще. А то голову сломал, разбирая:

return mod100 >= 5 && mod100 <= 20 ? 2 : mod10 == 1 ? 0 : mod10 >= 2 && mod10 <= 4 ? 1 : 2;
Ответить с цитированием