Формат валюты INR

Мне нужно показать такой формат валюты, как мы можем показать.

₹1
₹10
₹100
₹1,000
₹10,000
₹1,00,000
......

Ответ 2

Индийская рупия следует за другим форматом по сравнению с американской валютой; Таким образом, не используйте фильтр по умолчанию angular для форматирования индийских рупий

Пользовательский фильтр валюты INR

var app = angular.module('app', []);

app.controller('indexCtrl', function ($scope) {
    $scope.amount = 10000000.33;
});

app.filter('INR', function () {        
    return function (input) {
        if (! isNaN(input)) {
            var currencySymbol = '₹';
            //var output = Number(input).toLocaleString('en-IN');   <-- This method is not working fine in all browsers!           
            var result = input.toString().split('.');

            var lastThree = result[0].substring(result[0].length - 3);
            var otherNumbers = result[0].substring(0, result[0].length - 3);
            if (otherNumbers != '')
                lastThree = ',' + lastThree;
            var output = otherNumbers.replace(/\B(?=(\d{2})+(?!\d))/g, ",") + lastThree;
            
            if (result.length > 1) {
                output += "." + result[1];
            }            

            return currencySymbol + output;
        }
    }
});
<!DOCTYPE html>
<html ng-app="app">
<head>    
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
</head>
<body ng-controller="indexCtrl">
    Input: <input type="text" ng-model="amount">
    <h3>{{amount | INR}}</h3>
</body>
</html>

Ответ 3

Просто используйте INR в валютном фильтре

{{product.product_cost | currency:'INR':true}}

Ответ 4

Вы можете сделать фильтр с помощью toLocaleString, например:

Number(data).toLocaleString('en-IN', { style: 'currency', currency: 'INR', maximumFractionDigits: 0})

Пример фильтра:

.filter('IndianCurrency', function() {
    return function(data) {
        if (null != data) {
            return Number(data).toLocaleString('en-IN', { style: 'currency', currency: 'INR', maximumFractionDigits: 0});
        } else {
            return Number(0).toLocaleString('en-IN', { style: 'currency',currency: 'INR', maximumFractionDigits: 0});
        }
    };
});

Использование:

{{ rent | IndianCurrency }}

Ответ 5

Чтобы напечатать символ рупии (), попробуйте вот так:

{{price | currency:"&#8377;"}}

Подробнее о форматировании см. this.

Ответ 6

Если любой из них выглядит так же в angular 2, то вот решение, 1.Создать пользовательскую трубку 2. Используйте в своем коде кода html

1. Создать пользовательский канал.

Создать файл indianCurrency.pipe.ts

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({name: 'indianCurrency'})
export class IndianCurrency implements PipeTransform {
  transform(value: number, args: string[]): any {

        if (! isNaN(value)) {
            var currencySymbol = '₹';
            //var output = Number(input).toLocaleString('en-IN');   <-- This method is not working fine in all browsers!           
            var result = value.toString().split('.');

            var lastThree = result[0].substring(result[0].length - 3);
            var otherNumbers = result[0].substring(0, result[0].length - 3);
            if (otherNumbers != '')
                lastThree = ',' + lastThree;
            var output = otherNumbers.replace(/\B(?=(\d{2})+(?!\d))/g, ",") + lastThree;

            if (result.length > 1) {
                output += "." + result[1];
            }            

            return currencySymbol + output;
        }

  }
}

Объявить в app.module.ts

 declarations: [
  .....,
    IndianCurrency
  ],

2. Используйте в своем html

{{amount | indianCurrency}}

Ответ 7

Попробуйте этот

var x=1000;
x=x.toString();
var lastThree = x.substring(x.length-3);
var otherNumbers = x.substring(0,x.length-3);
if(otherNumbers != '')
    lastThree = ',' + lastThree;
var res = otherNumbers.replace(/\B(?=(\d{2})+(?!\d))/g, ",") + lastThree;

alert(res);

Ответ 8

Для отображения суммы с двумя цифрами после десятичной...

Попробуйте следующее:

var num=1234.567;
 var ans= num.toLocaleString('en-IN',{ style: 'currency', currency: "INR",minimumFractionDigits:2,maximumFractionDigits:2 });

//output
//₹ 1,234.57

Ответ 9

Я знаю это немного позже, но вы можете просто использовать https://osrec.github.io/currencyFormatter.js/, который обрабатывает

Тогда вам понадобится следующее:

// Outputs ₹ 25,34,234.00
OSREC.CurrencyFormatter.format(2534234, { currency: 'INR' }); 

Ответ 10

Индийская валюта короткая, например, если вы хотите просмотреть валюту, такую как ₹ 2.5 Lakh, C 3 Cr, ₹ 12 Lakh и т.д., Используйте ниже Pipe. Это будет работать

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'pricePipe'
})
export class PricePipePipe implements PipeTransform {

  transform(value: number, args: string[]): any {

    if (! isNaN(value)) {
        var currencySymbol = '₹';
        if (value == null) {
          return '';
      }
      var InrRSOut = value;
      InrRSOut = Math.round(InrRSOut);
      var RV = "";
      if (InrRSOut > 0 && InrRSOut < 1000) {
          RV = InrRSOut.toString();
      }
      else if (InrRSOut >= 1000 && InrRSOut < 10000) {
          RV = InrRSOut.toString();
      }
      else if (InrRSOut >= 10000 && InrRSOut < 100000) {
          var f1 = InrRSOut.toString().substring(0, 2);
          var f2 = InrRSOut.toString().substring(2, 5);
          RV = f1 + "," + f2;

      }
      else if (InrRSOut >= 100000 && InrRSOut < 1000000) {
          var f1 = InrRSOut.toString().substring(0, 1);
          var f2 = InrRSOut.toString().substring(1, 3);
          if (f2 == "00") {
              RV = f1 + " Lacs";
          }
          else {
              RV = f1 + "." + f2 + " Lacs";
          }
      }
      else if (InrRSOut >= 1000000 && InrRSOut < 10000000) {
          var f1 = InrRSOut.toString().substring(0, 2);
          var f2 = InrRSOut.toString().substring(2, 4);
          if (f2 == "00") {
              RV = f1 + " Lacs";
          }
          else {
              RV = f1 + "." + f2 + " Lacs";
          }
      }
      else if (InrRSOut >= 10000000 && InrRSOut < 100000000) {
          var f1 = InrRSOut.toString().substring(0, 1);
          var f2 = InrRSOut.toString().substring(1, 3);
          if (f2 == "00") {
              RV = f1 + " Cr";
          }
          else {
              RV = f1 + "." + f2 + " Cr";
          }
      }
      else if (InrRSOut >= 100000000 && InrRSOut < 1000000000) {
          var f1 = InrRSOut.toString().substring(0, 2);
          var f2 = InrRSOut.toString().substring(2, 4);
          if (f2 == "00") {
              RV = f1 + " Cr";
          }
          else {
              RV = f1 + "." + f2 + " Cr";
          }
      }
      else if (InrRSOut >= 1000000000 && InrRSOut < 10000000000) {
          var f1 = InrRSOut.toString().substring(0, 3);
          var f2 = InrRSOut.toString().substring(3, 5);
          if (f2 == "00") {
              RV = f1 + " Cr";
          }
          else {
              RV = f1 + "." + f2 + " Cr";
          }
      }
      else if (InrRSOut >= 10000000000) {
          var f1 = InrRSOut.toString().substring(0, 4);
          var f2 = InrRSOut.toString().substring(6, 8);
          if (f2 == "00") {
              RV = f1 + " Cr";
          }
          else {
              RV = f1 + "." + f2 + " Cr";
          }
      }
      else {
          RV = InrRSOut.toString();
      }
      return currencySymbol + RV;
    }

}

}

В HTML используйте как

{{ 125000000 | pricePipe }}

Выход

₹12.50 Cr

Ответ 11

Просто добавьте фильтр валюты, как это.

 {{object.price | currency:"INR":true}}

Ответ 12

Вы можете использовать это: {{amount:| currency:"₹"}} или вы можете использовать шестнадцатеричный код для "₹"

Вход: {{3*100000000 | currency:"₹"}}

Выход: ₹300,000,000.00

Ответ 13

  • Получить цифры до трех последних.
  • Замените остальные цифры на prefix.replace(/\B(?=(?:\d{2})+(?!\d))/g, ",")
  • Объедините вышеуказанный раздел с этим измененным префиксом

Полное объяснение того, почему это регулярное выражение помещает запятые в нужное место, упоминается здесь.

Ответ 14

Вы можете форматировать валюту в INR, используя pipe и даже удаляя десятичное значение (например, Paise), например

{{bal.walletamt | currency:"₹ " : false : '2.0-0'}}

этот код будет работать и для ionic3

Ответ 15

{{myobject.price | currency:'INR'}}

Если вам не нужно последнее десятичное значение, тогда вы можете использовать номер трубы с

₹{{myobject.price | number}}

Если вам не нужно последнее десятичное значение, но вы хотите использовать встроенную функцию валютного канала, то вы можете создать пользовательский канал для валюты или разделить канал и использовать с валютой

Ex: {{myobject.price  | currency:'INR' | custSplit:".":"0"}}

Примечание: custSplit- Это пользовательский канал, который разбивает строку, что бы мы ни проходили (here- "."), И получает индекс, который нам нужен (индекс here- "0").

Подробнее о трубе читайте в угловых документах 2+.

Ответ 16


@Pipe({
  name: 'customCurrency'
})
export class CustomCurrencyPipe implements PipeTransform {

  transform(value: number, isSymbol: string, decPointer: string, isPrefix: boolean): string {

    if (!isNaN(value)) {
       var formatted_value;
      var currencyText = isSymbol;
      if (currencyText == '₹') {
        // for Indian number system
        formatted_value = new Intl.NumberFormat('en-IN', { maximumSignificantDigits: 3 }).format(value)
      }
      else {
        formatted_value = new Intl.NumberFormat().format(value)
      }
      return currencyText + ' ' + formatted_value;
    }
  }

}

HTML

<div>{{ 10000000 | customCurrency:'₹':'1.0':false}}</div>

Ответ 17

В angular, создайте настраиваемый фильтр, подобный этому

myApp.filter('ic', function()
{
   return function(value)
   {
       return '₹ ' + value;
   }
});

И тогда вы можете {{data|number|ic}}