Добрый день. Мучаюсь уже несколько дней и не могу найти ни в русскоязычном интернете ни на американских форумах - ничего подходящего.
Цель: Превращать числа в текст.
Пример:
5.25 ->
Пять целых двадцать пять сотых ;
2.00 ->
Два ;
1.10 ->
Один целых десять сотых
Находил самую подходящую для меня функцию на jQuery, но превращает она некорректно.
К примеру число
5.00 оно превращает в
Пять целых ноль ноль сотых
function numberToWords(number) {
var digit = ['ноль', 'один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять'];
var elevenSeries = ['десять', 'одиннадцать', 'двенадцать', 'тринадцать', 'четырнадцать', 'пятнадцать', 'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать'];
var countingByTens = ['двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто'];
var shortScale = ['', 'тысяча', 'миллион', 'миллиард', 'триллион'];
number = number.toString();
number = number.replace(/[\, ]/g, '');
if (number != parseFloat(number)) return 'not a number';
var index_num = number.indexOf('.'); // Узнаем номер точки в числе (у нас всегда под номером 2)
if (index_num == -1) x = number.length; // Правило если, число целое
if (index_num > 15) return 'too big'; // Правило, если число больше 15 цифр
var n = number.split(''); // Разбиваем число на новый массив цифрами (Пример: 1,2,.,0,0)
var str = '';
var sk = 0;
for (var i = 0; i < index_num; i++) {
if ((index_num - i) % 3 == 2) {
if (n[i] == '1') {
str += elevenSeries[Number(n[i + 1])] + '';
i++; sk = 1;
} else if (n[i] != 0) {
str += countingByTens[n[i] - 2] + '';
sk = 1;
}
}
else if (n[i] != 0) {
str += digit[n[i]] + '';
if ((index_num - i) % 3 == 0) str += 'hundred ';
sk = 1; }
if ((index_num - i) % 3 == 1) {
if (sk)
str += shortScale[(index_num - i - 1) / 3] + ' ';
sk = 0;
} } if (index_num != number.length) { var y = number.length;
str += 'целых ';
for (var i = index_num + 1; i < y; i++) str += digit[n[i]] + ' ';
} str = str.replace(/\number+/g, ' ');
return str.trim() + " сотых";
}
Очень прошу, друзья помочь в решении задачи. Задача кажется не слишком сложной, но она оказалась достаточной, чтобы мне запутаться.