que hace ejemplo javascript jquery number-systems

hace - Mostrar un número en formato indio usando Javascript



onclick void 0 (12)

Aquí está la función,

function numberWithCommas(x) { return x.toString().substring(0,x.toString().split(''.'')[0].length-3).replace(//B(?=(/d{2})+(?!/d))/g, ",") + "," + x.toString().substring(x.toString().split(''.'')[0].length-3); }

si su entrada es 10000.5,

numberWithCommas(10000.5)

Obtendrás una salida como esta, 10,000.5

Tengo el siguiente código para mostrar en el sistema de numeración indio.

var x=125465778; var res= x.toString().replace(//B(?=(/d{3})+(?!/d))/g, ",");

Estoy obteniendo esta salida: 125,465,778 .

Necesito resultados como este: 12,54,65,778 .

Por favor, ayúdame a resolver este problema.


Basándome en la pregunta de Nidhinkumar, he comprobado las respuestas anteriores y, al manejar números negativos, la salida no será correcta, por ejemplo: -300 debe mostrarse como -300, pero las respuestas anteriores lo mostrarán como -, 300 que no es bueno, así que He intentado con el siguiente código que funciona incluso durante los casos negativos.

var negative = input < 0; var str = negative ? String(-input) : String(input); var arr = []; var i = str.indexOf(''.''); if (i === -1) { i = str.length; } else { for (var j = str.length - 1; j > i; j--) { arr.push(str[j]); } arr.push(''.''); } i--; for (var n = 0; i >= 0; i--, n++) { if (n > 2 && (n % 2 === 1)) { arr.push('',''); } arr.push(str[i]); } if (negative) { arr.push(''-''); } return arr.reverse().join('''');


Dada una función de número por debajo, devuelve un número formateado en formato indio de agrupación de dígitos.

ej .: entrada: 12345678567545.122343

salida: 1,23,45,67,85,67,545.122343

function formatNumber(num) { var n1, n2; num = num + '''' || ''''; // works for integer and floating as well n1 = num.split(''.''); n2 = n1[1] || null; n1 = n1[0].replace(/(/d)(?=(/d/d)+/d$)/g, "$1,"); num = n2 ? n1 + ''.'' + n2 : n1; return num; }

https://jsfiddle.net/scLtnug8/1/


Esta función puede manejar el valor flotante de manera adecuada, además de otra respuesta

function convertNumber(num) { var n1, n2; num = num + '''' || ''''; n1 = num.split(''.''); n2 = n1[1] || null; n1 = n1[0].replace(/(/d)(?=(/d/d)+/d$)/g, "$1,"); num = n2 ? n1 + ''.'' + n2 : n1; n1 = num.split(''.''); n2 = (n1[1]) || null; if (n2 !== null) { if (n2.length <= 1) { n2 = n2 + ''0''; } else { n2 = n2.substring(0, 2); } } num = n2 ? n1[0] + ''.'' + n2 : n1[0]; return num; }

esta función convertirá todas las funciones en flotar como lo es

function formatAndConvertToFloatFormat(num) { var n1, n2; num = num + '''' || ''''; n1 = num.split(''.''); if (n1[1] != null){ if (n1[1] <= 9) { n2 = n1[1]+''0''; } else { n2 = n1[1] } } else { n2 = ''00''; } n1 = n1[0].replace(/(/d)(?=(/d/d)+/d$)/g, "$1,"); return n1 + ''.'' + n2; }


Esto debería funcionar.

var number=12345678; alert(number.toLocaleString());

también puede pasar los argumentos dentro de la función aquí por defualt, tomará la convención internacional. Si quiere usar la convención india, debe escribirla así.

alert(number.toLocaleString("hi-IN"));

Pero este código solo funcionará en Chrome, Mozzilla e IE. No funcionará en Safari.


Intente lo siguiente, he encontrado un complemento de formateador numérico aquí: número de script Java formateador

Al usar eso he hecho el siguiente código, funciona bien, prueba esto, te ayudará ...

SCRIPT:

<script src="format.20110630-1100.min.js" type="text/javascript"></script> <script> var FullData = format( "#,##0.####", 125465778) var n=FullData.split(","); var part1 =""; for(i=0;i<n.length-1;i++) part1 +=n[i]; var part2 = n[n.length-1] alert(format( "#0,#0.####", part1) + "," + part2); </script>

Insumos:

1) 125465778 2) 1234567.89

Productos:

1) 12,54,65,778 2) 12,34,567.89


La forma más sencilla es usar el plugin Globalize (lea más here y here ):

var value = 125465778; var formattedValue = Globalize.format(value, ''n'');


Para enteros solo no se necesitan manipulaciones adicionales.

Esto coincidirá con cada dígito desde el final, teniendo 1 o más patrones de dos dígitos después, y lo reemplazará con sí mismo + ",":

"125465778".replace(/(/d)(?=(/d/d)+$)/g, "$1,"); -> "1,25,46,57,78"

Pero como queremos tener 3 al final, expresemos esto explícitamente agregando "/ d" adicional antes del final de la entrada:

"125465778".replace(/(/d)(?=(/d/d)+/d$)/g, "$1,"); -> "12,54,65,778"


Para enteros:

var x=12345678; x=x.toString(); var lastThree = x.substring(x.length-3); var otherNumbers = x.substring(0,x.length-3); if(otherNumbers != '''') lastThree = '','' + lastThree; var res = otherNumbers.replace(//B(?=(/d{2})+(?!/d))/g, ",") + lastThree; alert(res);

Demo en vivo

Para flotar:

var x=12345652457.557; x=x.toString(); var afterPoint = ''''; if(x.indexOf(''.'') > 0) afterPoint = x.substring(x.indexOf(''.''),x.length); x = Math.floor(x); x=x.toString(); var lastThree = x.substring(x.length-3); var otherNumbers = x.substring(0,x.length-3); if(otherNumbers != '''') lastThree = '','' + lastThree; var res = otherNumbers.replace(//B(?=(/d{2})+(?!/d))/g, ",") + lastThree + afterPoint; alert(res);

Demo en vivo



llego tarde, pero supongo que esto ayudará :)

puedes usar Number.prototype.toLocaleString()

Sintaxis

numObj.toLocaleString([locales [, options]])

var number = 123456.789; // India uses thousands/lakh/crore separators document.getElementById(''result'').innerHTML = number.toLocaleString(''en-IN''); // → 1,23,456.789 document.getElementById(''result1'').innerHTML = number.toLocaleString(''en-IN'', { maximumFractionDigits: 2, style: ''currency'', currency: ''INR'' }); // → Rs.123,456.79

<div id="result"></div> <div id="result1"></div>