INR货币格式

时间:2016-02-24 09:56:30

标签: javascript angularjs

我需要显示这样的货币格式,我们如何展示。

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

20 个答案:

答案 0 :(得分:14)

与美国货币相比,印度卢比的格式不同;因此,请勿使用默认角度货币过滤器来设置印度卢比的格式

自定义INR货币过滤器

String[] names=new String[5];
        names[0]="Hello 1";
        names[1]="Hello 2";
        names[2]="Hello 3";
        names[3]="Hello 4";
        names[4]="Hello 5";
        inboxStyle.setBigContentTitle("Hello");
        for (String name:names)
        {
            inboxStyle.addLine(name);
        }

        builder.setStyle(inboxStyle);
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;
        }
    }
});

答案 1 :(得分:12)

在HTML中

{{ currency_expression | currency : symbol : fractionSize}}

例如

{{amount | currency:"₹":0}}

你也可以提供帮助 https://docs.angularjs.org/api/ng/filter/currency

答案 2 :(得分:6)

只需在货币过滤器中使用INR

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

答案 3 :(得分:5)

您可以使用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 }}

答案 4 :(得分:3)

要打印卢比符号(),请尝试以下操作:

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

有关更多格式,请参阅this

答案 5 :(得分:3)

如果任何一个在角度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}}

答案 6 :(得分:1)

使用逗号分隔符管道和自定义INR货币PIPE组合

在HTML

1。首先使用逗号分隔符管道。

2。之后,使用自定义管道 INR管道

{{currency_expression |数字:'':'en-IN'| INRpipe}}

Pipe.ts

transform(value:string):字符串{

if (!value) {
  return null;
}

return `₹${value}`; // this line will only solve your problem

以下是可选的

/ 如果要添加两个小数点货币 /

然后按照这种方式。

if(value.includes('。')){

  return `₹${value}`;

}

返回₹${value}.00;

}

答案 7 :(得分:1)

我相信currency pipe将解决此问题

注意:符号中数字参数的语法为-> "numberOfInteger:minimumFractions-maxFractions"

输入: {{1499 |货币:'INR':'符号':'1.0'}}

输出: ¥ 1,499

说明-> '1.0'表示货币管道将至少显示1位数字且不显示小数。

让我为您提供另一个示例:

输入: {{99 |货币:'INR':'符号':'3.2-2'}}

输出: ₹099.00

说明-> '3.2-2'表示货币管道将至少显示3位数字,并显示小数点最小2个分数和最大2个分数。

答案 8 :(得分:1)


@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').format(value)
      }
      else {
        formatted_value = new Intl.NumberFormat().format(value)
      }
      return currencyText + ' ' + formatted_value;
    }
  }

}

HTML

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

答案 9 :(得分:1)

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

如果不需要最后一个十进制值,则可以将数字管道用于

₹{{myobject.price | number}}
  

如果不需要最后一个十进制值,但您想使用内置的   货币管道功能,则可以为   货币,也可以创建拆分管道并与货币一起使用

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

注意:custSplit-这是一个自定义管道,它将字符串拆分为任意形式   通过(此处-“。”)并获取所需的索引(此处为“ 0”索引)。

有关管道的更多信息,请阅读angular 2+ doc

答案 10 :(得分:1)

印度货币缩写,例如,如果您想要货币视图,例如 250万克拉,₹3 Cr,₹120万克拉等,则在“管道”下方使用。 会起作用

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 :(得分:1)

我知道它有点晚了,但您可以使用处理

https://osrec.github.io/currencyFormatter.js/

然后您只需要:

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

答案 12 :(得分:1)

对于小数点后两位数的显示量...

试试这个:

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

//output
//₹ 1,234.57

答案 13 :(得分:1)

试试这个

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);

答案 14 :(得分:0)

您可以使用管道格式化INR中的货币,甚至可以删除十进制值(即Paise),如

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

此代码也适用于ionic3

答案 15 :(得分:0)

  1. 在最后三个之前获取数字。
  2. prefix.replace(/\B(?=(?:\d{2})+(?!\d))/g, ",")
  3. 替换其余数字
  4. 将上述部分与此修改前缀
  5. 合并

    有关为什么此正则表达式将逗号放在正确位置的完整说明,请参阅here

答案 16 :(得分:0)

您可以使用此{{amount:| currency:"₹"}},也可以使用"₹"

的十六进制代码

输入:{{3*100000000 | currency:"₹"}}

输出:₹300,000,000.00

答案 17 :(得分:0)

只需添加货币过滤器即可。

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

答案 18 :(得分:-1)

如果“amount”是包含要转换为 INR 格式的数字的变量,请使用以下 html 代码中给出的方法之一 -

1. {{ 金额 |货币:'INR':真}}

结果:1​​50,000.00 卢比

2. {{ 金额 |货币:'INR':真}}

结果:INR150,000.00

3. {{ amount.toLocaleString('en-IN')}}

结果:1​​,50,000

答案 19 :(得分:-1)

在角度中,创建一个像这样的自定义过滤器

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

然后你可以{{data|number|ic}}