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); // Выведет "один триллион двести тридцать четыре миллиарда пятьсот шестьдесят семь миллионов восемьсот девяносто тысяч сто двадцать три"