# Show amount of money in Indian rupees as K / Lakhs / Crores

The method to convert a number to Indian currency as K / lakhs / crores is at :
https://anjanesh.dev/returning-amount-of-money-in-indian-ruppes-to-crores-lakhs-thousands

Here's the JavaScript equivalent using [Intl.NumberFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat) which is JavaScript's equivalent to PHP's `number_format`:

```javascript
const INR_THOUSAND = 1000;
const INR_LAKH = 100 * INR_THOUSAND;
const INR_CRORE = 100 * INR_LAKH;

const formatter = new Intl.NumberFormat('en', { minimumFractionDigits: 0, maximumFractionDigits: 2 });

function amountInINR(amount)
{
    INR = amount;
    ext = "";

    if (amount > INR_CRORE)
    {
        INR = amount / INR_CRORE;
        ext = INR == 1 ? "crore" : "crores";
        INR = formatter.format(amount / INR_CRORE, 2) + ' ' + ext;
    }
    else if (amount > INR_LAKH)
    {
        INR = amount / INR_LAKH;
        ext = INR == 1 ? "lakh" : "lakhs";
        INR = formatter.format(amount / INR_LAKH, 2) + ' ' + ext;
    }
    else if (amount > INR_THOUSAND)
    {
        INR = amount / INR_THOUSAND;
        ext = INR == 1 ? "lakh" : "K";
        INR = formatter.format(amount / INR_THOUSAND, 2) + ' ' + ext;
    }    
    else
    {
        INR = formatter.format(amount, 2);
    }
    
    return INR;
}
```

The AlpineJS's template :

```html
<div x-data="{ indian_amount: '' }">
  <input type="text" name="amount" required id="amount" x-model="indian_amount" />
  &nbsp;₹<span x-text="amountInINR(indian_amount)"></span>
</div>
```

Full Demo - https://anjanesh.s3.amazonaws.com/demo/alpine/x-model-inr-currency.html

Update : `Intl.NumberFormat` has the option to get INR out of it but the notation display is a bit different - for example, thousands is represented as T and not K - and this does not work in Safari (version 14 is what I tested it on).

```
let amountInINR = (amount) =>
{
    return new Intl.NumberFormat("en-IN", {
      style: "currency",
      currency: "INR",
      notation: "compact",
      compactDisplay: "long"
    }).format(amount);
}
```

- 36000 will return ₹36T
- 36000000 will return ₹3.6Cr
- 36000000000 will return  ₹3.6TCr 

Thanks to this [StackOverflow answer](https://stackoverflow.com/a/73441251/126833), `.replace()` is easiest to implement.

```
let amountInINR = (amount) =>
{
    return new Intl.NumberFormat("en-IN", {
      style: "currency",
      currency: "INR",
      notation: "compact",
      compactDisplay: "long",      
    }).format(amount).replace('T', 'K').replace('L', ' lakhs').replace('Cr', ' Crores');
}
```
