2012-10-10 11 views
37

पीएचपी फंक्शन:jQuery/जावास्क्रिप्ट में पीएचपी समारोह number_format के बराबर

function formatNumberForDisplay($number, $decimal=0, $decimalSeperator='.', $numberSeperator=',') 
{ 
    return number_format($number, $decimal, $decimalSeperator, $numberSeperator); 
} 

मेरे जरूरत: शरीर के किसी भी मुझे jQuery/जावास्क्रिप्ट में बराबर कार्यक्षमता बता सकते हैं।

अग्रिम धन्यवाद। आप प्राप्त करना चाहते हैं क्या

jquery-numberformatter

Jquery-Price-Format

+0

http://stackoverflow.com/questions/1068284/format-numbers-in-javascript –

उत्तर

36

यह है:

+0

number_format (नंबर, दशमलव, dec_point, thousands_sep) –

+14

@MoVod: स्वरूपण संख्या के बारे में 1 340.23 या 1,340.00 (नोट हजार विभाजक) के बारे में क्या? – zergussino

+0

toFixed() दशमलव बिंदु को राउंड अप करता है जब यह> 5 है, लेकिन php में number_format() दशमलव बिंदु> = 5 है। मुझे सत्यापन में कोई समस्या है – Annapurna

2

यह कोई आसान, इस तरह के रूप में सरल jQuery-प्लग इन का उपयोग करने का प्रयास करें?

yourFloatVarHere.toFixed(2); 

voilà।

2

यहाँ एक सरल समारोह है कि आप php में number_format की लगभग एक ही परिणाम प्राप्त करने के लिए उपयोग कर सकते है:

function number_format(user_input){ 
    var filtered_number = user_input.replace(/[^0-9]/gi, ''); 
    var length = filtered_number.length; 
    var breakpoint = 1; 
    var formated_number = ''; 

    for(i = 1; i <= length; i++){ 
     if(breakpoint > 3){ 
      breakpoint = 1; 
      formated_number = ',' + formated_number; 
     } 
     var next_letter = i + 1; 
     formated_number = filtered_number.substring(length - i, length - (i - 1)) + formated_number; 

     breakpoint++; 
    } 

    return formated_number; 
} 

एक और तरीका है एक PHP स्क्रिप्ट जहां number_format पर चलने के लिए कॉल करने के लिए ajax का उपयोग करना है संख्या और एक स्ट्रिंग के रूप में AJAX के साथ इसे वापस। लेकिन यह थोड़ा गन्दा है।

10

मूल निवासी "Intl" वस्तु दृष्टिकोण:

var amount = 5000.25; 
var locale = 'de'; 
var options = {style: 'currency', currency: 'eur', minimumFractionDigits: 2, maximumFractionDigits: 2}; 
var formatter = new Intl.NumberFormat(locale, options); 

console.log(formatter.format(amount)); 

http://jsfiddle.net/arturrelax/sa9jL138/1/

में और जानकारी यहां: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl

+2

ब्राउज़र संगतता नोट: मोबाइल सफारी और आईई <11 समर्थित नहीं हैं। उपयोग करने के लिए सुझाव नहीं दिया। – Raptor

34

js में number_format का एक ही बराबर यहाँ here

function number_format (number, decimals, dec_point, thousands_sep) { 
    // Strip all characters but numerical ones. 
    number = (number + '').replace(/[^0-9+\-Ee.]/g, ''); 
    var n = !isFinite(+number) ? 0 : +number, 
     prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), 
     sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, 
     dec = (typeof dec_point === 'undefined') ? '.' : dec_point, 
     s = '', 
     toFixedFix = function (n, prec) { 
      var k = Math.pow(10, prec); 
      return '' + Math.round(n * k)/k; 
     }; 
    // Fix for IE parseFloat(0.55).toFixed(0) = 0; 
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.'); 
    if (s[0].length > 3) { 
     s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep); 
    } 
    if ((s[1] || '').length < prec) { 
     s[1] = s[1] || ''; 
     s[1] += new Array(prec - s[1].length + 1).join('0'); 
    } 
    return s.join(dec); 
} 
+4

हालांकि यह थोड़ी देर पहले पोस्ट किया गया था, फिर भी मैंने सोचा कि मैं आपको धन्यवाद कहूंगा - इस शानदार जवाब ने मेरा दिन बचाया! –

3

पाया कर सकते हैं एक और एस है हॉर्ट समाधान जो PHP-समकक्ष की तरह व्यवहार करना चाहिए।

function number_format(number,decimals,dec_point,thousands_sep) { 
    number = number*1;//makes sure `number` is numeric value 
    var str = number.toFixed(decimals?decimals:0).toString().split('.'); 
    var parts = []; 
    for (var i=str[0].length; i>0; i-=3) { 
     parts.unshift(str[0].substring(Math.max(0,i-3),i)); 
    } 
    str[0] = parts.join(thousands_sep?thousands_sep:','); 
    return str.join(dec_point?dec_point:'.'); 
} 
+1

इस तरह के छोटे काम से प्यार है। लेकिन, हमें फ़ंक्शन में पहली पंक्ति में 'संख्या = संख्या * 1;' जोड़कर 'संख्या' को संख्या/पूर्णांक के रूप में बल देना होगा। क्योंकि कभी-कभी ब्राउज़र इसे स्ट्रिंग के रूप में पहचानता है, और फिर 'toFixed' फ़ंक्शन को पहचाना नहीं जाएगा (अपरिभाषित फ़ंक्शन नंबर .toFixed()) –

0

इस पर मेरे ले:

var number_format = function(num) { 
    stringNum = num.toString(); 
    stringNum = stringNum.split(""); 
    c = 0; 
    if (stringNum.length>3) { 
    for (i=stringNum.length; i>-1; i--) { 
     if ((c==3) && ((stringNum.length-i)!=stringNum.length)) { 
     stringNum.splice(i, 0, ","); 
     c=0; 
     } 
     c++ 
    } 
    return stringNum; 
    } 
    return num; 
} 

$("body").append(number_format(100000000)); 
6

मैं जानता हूँ कि यह एक पुरानी धागा है, लेकिन मैं अपने खुद के समारोह है, जो बनाया शुद्ध जावास्क्रिप्ट में।

https://gist.github.com/VassilisPallas/d73632e9de4794b7dd10b7408f7948e8

function number_format(number, decimals, dec_point, thousands_point) { 

    if (number == null || !isFinite(number)) { 
     throw new TypeError("number is not valid"); 
    } 

    if (!decimals) { 
     var len = number.toString().split('.').length; 
     decimals = len > 1 ? len : 0; 
    } 

    if (!dec_point) { 
     dec_point = '.'; 
    } 

    if (!thousands_point) { 
     thousands_point = ','; 
    } 

    number = parseFloat(number).toFixed(decimals); 

    number = number.replace(".", dec_point); 

    var splitNum = number.split(dec_point); 
    splitNum[0] = splitNum[0].replace(/\B(?=(\d{3})+(?!\d))/g, thousands_point); 
    number = splitNum.join(dec_point); 

    return number; 
} 

https://jsfiddle.net/htyxfra9/2/

+0

अच्छा, अच्छा काम करता है =) –

संबंधित मुद्दे