Lakhs / Crores システムで数値を単語に変換する: 効率的なアプローチ
数値を単語に変換することは、プログラミング、特にプログラミングにおいて一般的なタスクです。財務または会計アプリケーション。既存のソリューションの多くには、複数の正規表現とループを含む複雑なコードが含まれていますが、この記事では、南アジアの番号付けシステムの特定の要件に合わせた簡略化されたアプローチを紹介します。
このシステムは、「lakhs」と「crores」の概念を利用しています。 " 大きな数を表す。 10 万は 100,000 を表し、10 億は 10,000,000 を表します。カンマが区切り文字として使用される西洋の番号付けシステムとは異なり、南アジアの番号付けシステムではスペースが使用されます。
この変換を効率的に行うために、次のコード スニペットでは単一の正規表現を使用し、ループの必要性を排除しています。
const a = ['', 'one ', 'two ', 'three ', 'four ', 'five ', 'six ', 'seven ', 'eight ', 'nine ', 'ten ', 'eleven ', 'twelve ', 'thirteen ', 'fourteen ', 'fifteen ', 'sixteen ', 'seventeen ', 'eighteen ', 'nineteen '];
const b = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'];
function inWords (num) {
if ((num = num.toString()).length > 9) return 'overflow';
n = ('000000000' num).substr(-9).match(/^(\d{2})(\d{2})(\d{2})(\d{1})(\d{2})$/);
if (!n) return;
let str = '';
str = (n[1] != 0) ? (a[Number(n[1])] || b[n[1][0]] ' ' a[n[1][1]]) 'crore ' : '';
str = (n[2] != 0) ? (a[Number(n[2])] || b[n[2][0]] ' ' a[n[2][1]]) 'lakh ' : '';
str = (n[3] != 0) ? (a[Number(n[3])] || b[n[3][0]] ' ' a[n[3][1]]) 'thousand ' : '';
str = (n[4] != 0) ? (a[Number(n[4])] || b[n[4][0]] ' ' a[n[4][1]]) 'hundred ' : '';
str = (n[5] != 0) ? ((str != '') ? 'and ' : '') (a[Number(n[5])] || b[n[5][0]] ' ' a[n[5][1]]) 'only ' : '';
return str;
}
````
This code combines pre-defined arrays 'a' and 'b' to form various numerical representations. By utilizing a regular expression, it captures the different sections of the number (e.g., crores, lakhs, thousands, hundreds, and ones) and generates the appropriate words. Importantly, this approach is much more concise than the earlier solution presented.
To demonstrate the code's functionality, an HTML/JavaScript snippet can be used:
document.getElementById('number').onkeyup = function () {
document.getElementById('words').innerHTML = inWords(document.getElementById('number').value);
};
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3