![](/img/trans.png)
[英]NumberFormat returning wrong format for converting number to currency
[英]converting the number to the required currency format
將數字自定義為貨幣格式。 請參閱下面的代碼段。 但是當傳遞負數時,我需要自定義它。
function getMoneyValue(number) { var formatter = new Intl.NumberFormat('en-IN', { style: 'currency', currency: 'INR' }); return formatter.format(number) } console.log(getMoneyValue(200)) console.log(getMoneyValue(-200)) // expected [-] ₹200.00
因此,對於自定義引用Intl.NumberFormat當我嘗試這個片段時,問題是我沒有得到盧比符號
function getMoneyValue(number) { var formatter = new Intl.NumberFormat('en-IN', { style: 'currency', currency: 'INR' }); let parts = formatter.formatToParts(number).map((part) => { switch (part.type) { case "currency": return number >= 0? number: `[-] ${Math.abs(number)}`; default: return part.value; } }); return parts[1]; } console.log(getMoneyValue(200)) // expected ₹200.00 console.log(getMoneyValue(-200)) // expected [-] ₹200.00
任何幫助表示贊賞,實現這一目標的更好方法是什么
function getMoneyValue(number) { var formatter = new Intl.NumberFormat('en-IN', { style: 'currency', currency: 'INR' }); if(number < 0) { return '[-] '+ formatter.format(Math.abs(number)) } return formatter.format(number) } console.log(getMoneyValue(200)) console.log(getMoneyValue(-200))
檢查應該針對類型減號。 您不需要在 integer 類型下添加檢查,因為只有 integer 類型在沒有-ve 符號的情況下通過,它是一個正 integer 值。
function getMoneyValue(number) { var formatter = new Intl.NumberFormat('en-IN', { style: 'currency', currency: 'INR' }); let parts = formatter.formatToParts(number).map(({type, value}) => { switch (type) { case "integer": return value; case "minusSign": return '[-]' default: return value; } }).reduce((string, part) => string + part); return parts; } console.log(getMoneyValue(200)) console.log(getMoneyValue(-200))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.