Javascript.RU

Перевод числа в текст

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

function digtotext(dig){
    this.words = {
        m3:[['тысяча','тысячи','тысяч'], ['миллион','миллиона','миллионов'], ['миллиард', 'миллиарда', 'миллиардов']],
        m2:['сто','двести','триста','четыреста','пятьсот','шестьсот','семьсот','восемьсот','девятьсот'],
        m1:['дестять','двадцать','тридцать','сорок','пятьдесят','шестьдесят','семьдесят','восемдесят','девяносто'],
        m0:['один','два','три','четыре','пять','шесть','семь','восемь','девять','десять'],
        f0:['одина','две'],
        l0:['дестять', 'одиннадцать','двенадцать','тринадцать','четырнадцать','пятнадцать','шестнадцать','семнадцать','восемнадцать','девятнадцать']
    };
    this.dim = function(dig, power, words){
        var result = '';
        var pow = Math.floor(dig/Math.pow(10, power)) % Math.pow(10,3);
        if(!pow) return result;
        var n2 =  Math.floor(pow/100);
        var n1 =  Math.floor(pow%Math.pow(10,2)/10);
        var n0 =  Math.floor(pow%10);
        var s1 = (n1 > 0)?' ':'';
        var s0 = (n0 > 0)?' ':'';
        var get_n = function(){
            switch(power){
                case 0:
                case 6: 
                case 9: 
                    result +=s0+words.m0[n0-1];
                break;
                case 3:
                    if(n0 < 3){
                        result +=s0+words.f0[n0-1];
                    }else{
                        result +=s0+words.m0[n0-1];
                    }
                break;
            }
        };
        if(n2 > 0){
            result += words.m2[n2-1];
        }
        if(n1 > 0){
            if(n1 > 1){
                result +=s1+words.m1[n1-1];
                if(n0 > 0) get_n();
            }
            else{
                result +=s1+words.l0[n0]; 
            }            
        }else{
            if(n0 > 0) get_n();
        }        
        if(power){            
            var d = (power-3)/3;
            if((d == 0) && (n0+n1*10 >= 11 && n0+n1*10 <= 14)){
                result +=' '+words.m3[0][2];
            }else if(n0 == 1){
                result +=' '+words.m3[d][0];
            }
            else if((n0 >= 2) && (n0 <= 4)){
                result +=' '+words.m3[d][1];
            }
            else if((n0 == 0) || (n0 >= 5 && n0 <= 9)){
                result +=' '+words.m3[d][2];
            }
        }
        return result;
    }       
    this.result = '';
    for(var i = 9 ; i > -1; i-=3){
        this.result += this.dim(dig, i, this.words) + ' ';
    }
    return this.result.replace(/[\s]{2,}/ig,' ').trim();
}
+2

Автор: exru, дата: 26 декабря, 2014 - 10:23
#permalink

Обнаружил небольшой баг пока еще не поправил


Автор: pg slot คืนยอดเสีย (не зарегистрирован), дата: 1 июля, 2022 - 12:48
#permalink

PG slot returns the loss Now , playing games like slots have been fully developed into the online era. Makes it more accessible to a group of new gamblers pgslot


Автор: Slot formulas (не зарегистрирован), дата: 2 июля, 2022 - 18:24
#permalink

Slot formulas introduce online slots formulas that will make you win easy slots games like you've never experienced before. If you already know the formula Winning online slots games is easy and rich.


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
12 + 2 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Другие записи этого автора
Больше записей нет. Прокомментируйте эту запись - может быть, тогда он что-нибудь еще хорошее напишет ;)
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Популярные таги
Последние комментарии
Последние темы на форуме
Forum