siebel eScript число в число прописью

function NumberToWords(num) {
    if (num === 0) return 'ноль';
    
    var ones = ['ноль', 'один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять'];
    var teens = ['десять', 'одиннадцать', 'двенадцать', 'тринадцать', 'четырнадцать', 'пятнадцать', 'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать'];
    var tens = ['ноль', 'десять', 'двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто'];
    var hundreds = ['ноль', 'сто', 'двести', 'триста', 'четыреста', 'пятьсот', 'шестьсот', 'семьсот', 'восемьсот', 'девятьсот'];
    var scales = ['тысяча', 'миллион', 'миллиард', 'триллион'];

    function convert_hundreds(num) {
        return hundreds[Math.floor(num / 100)] + ' ' + convert_tens(num % 100);
    }

    function convert_tens(num) {
        if (num < 10) return ones[num];
        if (num < 20) return teens[num - 10];
        return tens[Math.floor(num / 10)] + ' ' + ones[num % 10];
    }

    function convert_large_numbers(num, scale_idx) {
        if (num < 1000) return convert_hundreds(num);
        var quotient = Math.floor(num / 1000);
        var remainder = num % 1000;
        var scale_name = scales[scale_idx] + (quotient > 1 ? 'ов' : '');
        return convert_large_numbers(quotient, scale_idx + 1) + ' ' + scale_name + ' ' + convert_hundreds(remainder);
    }

    return convert_large_numbers(num, 0).trim();
}

// Пример использования функции
var num = 1234567890123;
var result = NumberToWords(num);
TheApplication().RaiseErrorText(result); // Выведет "один триллион двести тридцать четыре миллиарда пятьсот шестьдесят семь миллионов восемьсот девяносто тысяч сто двадцать три"

Popular posts from this blog

xlam

crypto