Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const CENT = 0;
- const POINT = 1;
- const NOMINAL = Array("Nol", "Satu", "Dua", "Tiga", "Empat", "Lima", "Enam", "Tujuh", "Delapan", "Sembilan");
- const THOUDELIM = ".";
- const DECDELIM = ",";
- function initCap_(str) {
- return str.toLowerCase().replace(/(?:^|\s)[a-z]/g, function (m) {
- return m.toUpperCase();
- });
- };
- function format_v2(s, r, curr) {
- s += "";
- regexp = /^(\d*\.\d+|\d+)$/gi
- if (regexp.test(s)) {
- s = s.replace(/^0+/gi, "");
- s = s.split(".");
- s[1] = Math.round(s[1] / Math.pow(10, s[1].length - r)) + "";
- var l = s[0].length;
- var t = "";
- var c = 0;
- if (l == 0) {
- s[0] = "0";
- l = 1;
- };
- while (l > 0) {
- t = s[0][l - 1] + (c % 3 == 0 && c != 0 ? THOUDELIM : "") + t;
- l--;
- c++;
- }
- s[1] = s[1] == undefined ? "0" : s[1];
- for (i = s[1].length; i < r; i++) {
- s[1] += "0";
- }
- return curr + t + DECDELIM + s[1];
- } else
- return "ERROR: Invalid number format";
- }
- function threedigit(word) {
- while (word.length < 3) {
- word = ("0000000" + word).slice(-3);
- }
- word = word.split("");
- a = word[0];
- b = word[1];
- c = word[2];
- word = "";
- word += (a != "0" ? (a != "1" ? NOMINAL[parseInt(a)] : "Se") : "")
- + (a != "0" ? (a != "1" ? " Ratus" : "ratus") : "");
- word += " " + (b != "0" ? (b != "1" ? NOMINAL[parseInt(b)] : "Se") : "")
- + (b != "0" ? (b != "1" ? " Puluh" : "puluh") : "");
- word += " " + (c != "0" ? NOMINAL[parseInt(c)] : "");
- word = word.replace(/Sepuluh ([^ ]+)/gi, "$1 Belas");
- word = word.replace(/Satu Belas/gi, "Sebelas");
- word = word.replace(/^[ ]+$/gi, "");
- return word;
- }
- function twodigitcent(cent) {
- while (cent.length < 2) {
- cent = (cent + "0000000").substr(0, 2);
- }
- cent = cent.split("");
- a = cent[0];
- b = cent[1];
- cent = "";
- cent += (a != "0" ? (a != "1" ? NOMINAL[parseInt(a)] : "Se") : NOMINAL[parseInt(a)])
- + (a != "0" ? (a != "1" ? " Puluh" : "puluh") : "");
- cent += " " + (b != "0" ? NOMINAL[parseInt(b)] : "");
- cent = cent.replace(/Sepuluh ([^ ]+)/gi, "$1 Belas");
- cent = cent.replace(/Satu Belas/gi, "Sebelas");
- cent = cent.replace(/^[ ]+$/gi, "");
- return cent;
- }
- function terbilang(s, t, curr) {
- var r = 2;
- if (isNaN(t)) {
- t.toUpperCase().replace(/^\s+|\s+$/g, '');
- t = t == "POINT" ? POINT : CENT;
- }
- t = t == POINT ? POINT : CENT;
- s += "";
- regexp = /^(\d*\.\d+|\d+)$/gi
- if (regexp.test(s)) {
- s = s.replace(/^0+/gi, "");
- var zero3 = Array("", "Ribu", "Juta", "Milyar", "Trilyun", "Kuadriliun", "Kuantiliun", "Sekstiliun",
- "Septiliun", "Oktiliun", "Noniliun", "Desiliun");
- s = (parseFloat(s)).toFixed(r);
- s = s.split(".");
- var word = s[0];
- var cent = s[1];
- if (cent.length < 2) {
- cent += "0";
- }
- var tWord = "";
- var tCent = "";
- var subword = "";
- i = 0;
- while (word.length > 3) {
- subdigit = threedigit(word.substr(word.length - 3, 3));
- subword = subdigit + (subdigit != "" ? " " + zero3[i] + " " : "") + subword;
- word = word.substring(0, word.length - 3);
- i++;
- }
- subword = threedigit(word) + " " + zero3[i] + " " + subword;
- subword = subword.replace(/^ +$/gi, "");
- tWord = (subword == "" ? "NOL" : subword.toUpperCase());
- if (parseInt(s[1]) > 0) {
- tCent += (t == CENT ? " " + curr : " KOMA")
- if (t == CENT) {
- subword = twodigitcent(cent);
- } else {
- // subword=[];
- // for(i in cent) subword.push(NOMINAL[cent[i]]);
- // subword=subword.join(" ");
- subword = twodigitcent(cent);
- }
- tCent += (subword == "" ? "" : " ") + subword.toUpperCase()
- + (subword == "" || t == POINT ? " " + curr : " SEN");
- } else {
- tCent += curr;
- }
- return (tWord + tCent);
- } else
- return "ERROR: Invalid number format";
- }
- function toWords(s, curr) {
- // American Numbering System
- var th = ['', 'thousand', 'million', 'billion', 'trillion'];
- // uncomment this line for English Number System
- // var th = ['','thousand','million', 'milliard','billion'];
- var dg = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
- var tn = ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'];
- var tw = ['twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'];
- s = s.toString();
- s = s.replace(/[\, ]/g, '');
- if (s != parseFloat(s)) {
- return 'not a number';
- } else {
- sa = (parseFloat(s)).toFixed(2);
- sa = sa.split(".");
- var word = sa[0];
- var cent = sa[1];
- }
- var x = s.indexOf('.');
- var fulllength = s.length;
- if (x == -1)
- x = s.length;
- if (x > 15)
- return 'too big';
- var startpos = fulllength - (fulllength - x - 1);
- var n = s.split('');
- var str = '';
- var str1 = ''; //i added another word called cent
- var sk = 0;
- for (var i = 0; i < x; i++) {
- if ((x - i) % 3 == 2) {
- if (n[i] == '1') {
- str += tn[Number(n[i + 1])] + ' ';
- i++;
- sk = 1;
- } else if (n[i] != 0) {
- str += tw[n[i] - 2] + ' -';
- sk = 1;
- }
- } else if (n[i] != 0) {
- str += ' ' + dg[n[i]] + ' ';
- if ((x - i) % 3 == 0)
- str += 'hundred ';
- sk = 1;
- }
- if ((x - i) % 3 == 1) {
- if (sk)
- str += th[(x - i - 1) / 3] + ' ';
- sk = 0;
- }
- }
- str += curr ;
- // str += (Number(word) > 1 ? 's ' : ' ');
- if (x != s.length) {
- str += ' and ';
- // str1 += 'cents ';
- str1 += (Number(cent) > 1 ? 'cents ' : 'cent ');
- if (cent.length < 3) {
- s = '0' + cent;
- } else {
- s = cent;
- }
- x = s.indexOf('.');
- fulllength = s.length;
- if (x == -1)
- x = s.length;
- if (x > 15)
- return 'too big';
- startpos = fulllength - (fulllength - x - 1);
- n = s.split('');
- for (var i = 0; i < x; i++) {
- if ((x - i) % 3 == 2) {
- if (n[i] == '1') {
- str += tn[Number(n[i + 1])] + ' ';
- i++;
- sk = 1;
- } else if (n[i] != 0) {
- str += tw[n[i] - 2] + ' -';
- sk = 1;
- }
- } else if (n[i] != 0) {
- str += ' ' + dg[n[i]] + ' ';
- if ((x - i) % 3 == 0)
- str += 'hundred ';
- sk = 1;
- }
- if ((x - i) % 3 == 1) {
- if (sk)
- str += th[(x - i - 1) / 3] + ' ';
- sk = 0;
- }
- }
- }
- str = str.replace(/ - /gi, '-');
- str += ' ' + str1;
- str = str.replace(/- /gi, ' ');
- var result = str.replace(/\s+/gi, ' ');
- result = result.toUpperCase();
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement