Last active
August 29, 2015 14:26
-
-
Save ebta/53927b73e2469def1252 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Number.prototype.formatMoney = function(c, d, t){ | |
var n = this, | |
c = isNaN(c = Math.abs(c)) ? 2 : c, | |
d = d == undefined ? "." : d, | |
t = t == undefined ? "," : t, | |
s = n < 0 ? "-" : "", | |
i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", | |
j = (j = i.length) > 3 ? j % 3 : 0; | |
return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : ""); | |
}; | |
// Lebih detail nama variabelnya.. | |
Number.prototype.formatMoney = function(decPlaces, thouSeparator, decSeparator) { | |
var n = this, | |
decPlaces = isNaN(decPlaces = Math.abs(decPlaces)) ? 2 : decPlaces, | |
decSeparator = decSeparator == undefined ? "." : decSeparator, | |
thouSeparator = thouSeparator == undefined ? "," : thouSeparator, | |
sign = n < 0 ? "-" : "", | |
i = parseInt(n = Math.abs(+n || 0).toFixed(decPlaces)) + "", | |
j = (j = i.length) > 3 ? j % 3 : 0; | |
return sign + (j ? i.substr(0, j) + thouSeparator : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thouSeparator) + (decPlaces ? decSeparator + Math.abs(n - i).toFixed(decPlaces).slice(2) : ""); | |
}; | |
// Cara lainnya | |
/* | |
decimal_sep: character used as deciaml separtor, it defaults to '.' when omitted | |
thousands_sep: char used as thousands separator, it defaults to ',' when omitted | |
*/ | |
Number.prototype.toMoney = function(decimals, decimal_sep, thousands_sep) | |
{ | |
var n = this, | |
c = isNaN(decimals) ? 2 : Math.abs(decimals), //if decimal is zero we must take it, it means user does not want to show any decimal | |
d = decimal_sep || '.', //if no decimal separator is passed we use the dot as default decimal separator (we MUST use a decimal separator) | |
/* | |
according to [http://stackoverflow.com/questions/411352/how-best-to-determine-if-an-argument-is-not-sent-to-the-javascript-function] | |
the fastest way to check for not defined parameter is to use typeof value === 'undefined' | |
rather than doing value === undefined. | |
*/ | |
t = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, //if you don't want to use a thousands separator you can pass empty string as thousands_sep value | |
sign = (n < 0) ? '-' : '', | |
//extracting the absolute value of the integer part of the number and converting to string | |
i = parseInt(n = Math.abs(n).toFixed(c)) + '', | |
j = ((j = i.length) > 3) ? j % 3 : 0; | |
return sign + (j ? i.substr(0, j) + t : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : ''); | |
} | |
// Cara Lainnya Lagi (Super Extendded) | |
/** | |
* Number.prototype.format(n, x, d, c, s, p) | |
* | |
* @param integer n: length of decimal | |
* @param integer x: length of whole part | |
* @param mixed d: sections delimiter | |
* @param mixed c: decimal delimiter | |
* @param mixed s: currency symbol | |
* @param boolean p: prepend currency symbol | |
*/ | |
Number.prototype.format = function(n, x, d, c, s, p) { | |
var re = '\\d(?=(\\d{' + (x || 3) + '})+' + (n > 0 ? '\\D' : '$') + ')', | |
num = this.toFixed(Math.max(0, ~~n)); | |
return (s && p ? s : '') + (c ? num.replace('.', c) : num).replace(new RegExp(re, 'g'), '$&' + (d || ',')) + (s && !p ? s : ''); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment