Я пытаюсь сделать преобразование суммы в пропись с помощью JS в шаблоне счета вот код:
function numberToWords(num) {
const ones = ['ноль', 'один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять'];
const teens = ['десять', 'одиннадцать', 'двенадцать', 'тринадцать', 'четырнадцать', 'пятнадцать', 'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать'];
const tens = ['', '', 'двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто'];
const thousands = ['', 'тысяча', 'миллион', 'миллиард'];
const convertThreeDigits = (n) => {
let str = '';
const h = Math.floor(n / 100);
const t = Math.floor((n % 100) / 10);
const o = n % 10;
if (h > 0) {
str += ones[h] + ' сто ';
}
if (t > 1) {
str += tens[t] + ' ';
str += ones[o];
} else if (t === 1) {
str += teens[o];
} else {
str += ones[o];
}
return str.trim();
};
let integerPart = Math.floor(num);
let fractionalPart = Math.round((num - integerPart) * 100);
let integerWords = '';
let fractionWords = '';
if (integerPart === 0) {
integerWords = ones[0];
} else {
let i = 0;
while (integerPart > 0) {
const threeDigitChunk = integerPart % 1000;
if (threeDigitChunk > 0) {
integerWords = convertThreeDigits(threeDigitChunk) + ' ' + thousands[i] + ' ' + integerWords;
}
integerPart = Math.floor(integerPart / 1000);
i++;
}
}
if (fractionalPart > 0) {
fractionWords = convertThreeDigits(fractionalPart) + ' копеек';
}
return (integerWords + ' рублей ' + fractionWords).trim();
}
function formatAmount(amount) {
return numberToWords(amount) + ' BYN';
}
// Получаем строку с суммой и извлекаем числовую часть
function parseOrderTotal(orderTotalStr) {
let numericPart = parseFloat(orderTotalStr.replace(' BYN', '').trim());
return numericPart;
}
// Передаем значение через шаблонизатор и форматируем
var orderTotalStr = "91.00 BYN";
var numericTotal = parseOrderTotal(orderTotalStr);
var formattedTotal = formatAmount(numericTotal);
console.log(formattedTotal);
знаки < > заменяются на > и скрипт не работает, как это можно исправить ?