Как преобразовать числа в слово в индийском валютном формате

У меня есть PDF-форма с этим полем

1.Invoice
2.Date
3.Truck No 
4.Party Name
5.Party Place 
6.City
7.GSTIN
8.Product
9.HSN
10.QTY
11.Rate
12.Amount
13.CGST
14.SGST
15.Total
16.Number

Это мое поле формы

Мне нужно преобразовать свой номер в слово с помощью javascript

Пример: 5279,40 = двести семьдесят девять сорок пайз.

Я хочу преобразовать поле «Сумма» (это мое числовое поле) в числа в поле «Число»

Я хочу вывод в поле "NUmber"

Я использую Javscript для преобразования этого числа

Это мой скрипт проверки Custum

function ConvertToWords(num)
    {
    var aUnits = [ "Thousand", "Million", "Billion", "Trillion", "Quadrillion" ];
    var cWords = "and ";
    // var cWords = (num >= 1 && num < 2) ? "Dollar and " : "Dollars and "; // use for spelled out words
    var nLeft = Math.floor(num);
    for (var i = 0; nLeft > 0; i++) { 
    if (nLeft % 1000 > 0) {
    if (i != 0)
    cWords = ConvertToHundreds(nLeft) + " " + aUnits[i - 1] + " " + cWords;
    else
    cWords = ConvertToHundreds(nLeft) + " " + cWords;
           }
    nLeft = Math.floor(nLeft / 1000);
       }
    num = Math.round(num * 100) ;
    cWords += util.printf("%,102/100 Dollars", num); // numerical cents
    /* for spelled out cents
    if (num > 0) {
    cWords += ConvertToHundreds(num) + " Cents"; // spelled out cents
    } else {
    cWords += "Zero Cents";
        } 
    */
    return cWords;
    }

Я использую сценарий расчета Custum

Ниже моего скрипта вычисления Custum JavaScript

        var f = this.getField("Total");

    event.value = ConvertToHundreds(f.value);

Но этот скрипт не выдаст требуемый результат, в нем не отображается сумма после десятичной дроби в поле («Сумма»).

Как вы можете видеть на FFigure 1.1.

Рисунок 1.1

или этот код совершает еще одну ошибку, которую вы видите на рис. 1.2.

Рисунок 1.2 («Вы можете видеть в поле« Число »», здесь отображается только сорок, но мой Сумма в поле «Сумма» 5040.00 »)

Пожалуйста, дайте мне предложение или код, который решит мою проблему

Пожалуйста, не давайте мне дубликат моего вопроса. Я уже ищу этот вопрос на «https://stackoverflow.com», нет решения или кода, который Преобразование чисел в слова в индийской валюте Я нашел мало ответов, но они не будут работать с индийской валютой


person user9373184    schedule 03.09.2018    source источник
comment
Возможный дубликат преобразования цифр в слова с помощью JavaScript   -  person Muhammad Osama    schedule 03.09.2018
comment
не могли бы вы также добавить ConvertToHundreds ()?   -  person JanWillem Huising    schedule 03.09.2018
comment
Да, я добавляю ConvertToHundreds и его работу, но его результат - это не то, что я хочу   -  person user9373184    schedule 03.09.2018


Ответы (1)


Я использовал его, чтобы преобразовать сумму индийских рупий в слова со значением пайсы. В основном он отлично работает с машинописным текстом, если мы генерируем канал в angular 7+ или выше. Для получения дополнительной информации о трубах в angular перейдите по URL-адресу pipe в angular 7+ или выше

конвертировать сумму в индийских рупиях прописью с пайс

a = [
    '',
    'One ',
    'Two ',
    'Three ',
    'Four ',
    'Five ',
    'Six ',
    'Seven ',
    'Eight ',
    'Nine ',
    'Ten ',
    'Eleven ',
    'Twelve ',
    'Thirteen ',
    'Fourteen ',
    'Fifteen ',
    'Sixteen ',
    'Seventeen ',
    'Eighteen ',
    'Nineteen '];
b = [
    '',
    '',
    'Twenty',
    'Thirty',
    'Forty',
    'Fifty',
    'Sixty',
    'Seventy',
    'Eighty',
    'Ninety'];

transform(value: any): any {
    if (value) {
        let number = parseFloat(value).toFixed(2).split(".")
        let num = parseInt(number[0]);
        let digit = parseInt(number[1]);
        if (num) {
            if ((num.toString()).length > 9)  { return ''; }
            const n = ('000000000' + num).substr(-9).match(/^(\d{2})(\d{2})(\d{2})(\d{1})(\d{2})$/);
            const d = ('00' + digit).substr(-2).match(/^(\d{2})$/);
            if (!n) {return ''; }
            let str = '';
            str += (Number(n[1]) !== 0) ? (this.a[Number(n[1])] || this.b[n[1][0]] + ' ' + this.a[n[1][1]]) + 'Crore ' : '';
            str += (Number(n[2]) !== 0) ? (this.a[Number(n[2])] || this.b[n[2][0]] + ' ' + this.a[n[2][1]]) + 'Lakh ' : '';
            str += (Number(n[3]) !== 0) ? (this.a[Number(n[3])] || this.b[n[3][0]] + ' ' + this.a[n[3][1]]) + 'Thousand ' : '';
            str += (Number(n[4]) !== 0) ? (this.a[Number(n[4])] || this.b[n[4][0]] + ' ' + this.a[n[4][1]]) + 'Hundred ' : '';
            str += (Number(n[5]) !== 0) ? (this.a[Number(n[5])] || this.b[n[5][0]] + ' ' + this.a[n[5][1]]) + 'Rupee ' : '';        
            str += (Number(d[1]) !== 0) ? ((str !== '' ) ? "and " : '') + (this.a[Number(d[1])] || this.b[d[1][0]] + ' ' + this.a[d[1][1]]) + 'Paise Only' : 'Only';
            return str;
        } else {
            return '';
        }
    } else {
        return '';
    }
}
person Varun Prajapati    schedule 05.08.2020
comment
не могли бы вы добавить пояснения к своему коду, чтобы люди могли понять, что делает ваш код? - person Homungus; 05.08.2020
comment
Надеюсь, все в порядке. - person Varun Prajapati; 06.08.2020