truncar redondear numero limitar hacia formato decimales contar arriba javascript rounding

numero - ¿Cómo redondear números flotantes en javascript?



tofixed sin redondear (13)

Necesito redondear, por ejemplo, 6.688689 a 6.7 , pero siempre me muestra 7 .

Mi método:

Math.round(6.688689); //or Math.round(6.688689, 1); //or Math.round(6.688689, 2);

Pero el resultado siempre es el mismo 7 ... ¿Qué estoy haciendo mal?


Creo que debajo de la función puede ayudar

function roundOff(value,round) { return (parseInt(value * (10 ** (round + 1))) - parseInt(value * (10 ** round)) * 10) > 4 ? (((parseFloat(parseInt((value + parseFloat(1 / (10 ** round))) * (10 ** round))))) / (10 ** round)) : (parseFloat(parseInt(value * (10 ** round))) / ( 10 ** round)); }

uso: roundOff(600.23458,2); volverá 600.23


Creo que esta función puede ayudar.

function round(value, ndec){ var n = 10; for(var i = 1; i < ndec; i++){ n *=10; } if(!ndec || ndec <= 0) return Math.round(value); else return Math.round(value * n) / n; } round(2.245, 2) //2.25 round(2.245, 0) //2


Mi función de ronda extendida:

function round(value, precision) { if (Number.isInteger(precision)) { var shift = Math.pow(10, precision); return Math.round(value * shift) / shift; } else { return Math.round(value); } }

Ejemplo de salida:

round(123.688689) // 123 round(123.688689, 0) // 123 round(123.688689, 1) // 123.7 round(123.688689, 2) // 123.69 round(123.688689, -2) // 100


Puedes usar la función auxiliar desde el MDN . Que tendrás más flexibilidad:

Math.round10(5.25, 0); // 5 Math.round10(5.25, -1); // 5.3 Math.round10(5.25, -2); // 5.25 Math.round10(5, 0); // 5 Math.round10(5, -1); // 5 Math.round10(5, -2); // 5


Si estás en el contexto de node.js, puedes probar mathjs

const math = require(''mathjs'') math.round(3.1415926, 2) // result: 3.14


Si no solo quiere usar toFixed() sino también ceil() y floor() en un flotador, puede usar la siguiente función:

function roundUsing(func, number, prec) { var tempnumber = number * Math.pow(10, prec); tempnumber = func(tempnumber); return tempnumber / Math.pow(10, prec); }

Produce:

> roundUsing(Math.floor, 0.99999999, 3) 0.999 > roundUsing(Math.ceil, 0.1111111, 3) 0.112

UPD:

La otra forma posible es esta:

Number.prototype.roundUsing = function(func, prec){ var temp = this * Math.pow(10, prec) temp = func(temp); return temp / Math.pow(10, prec) }

Produce:

> 6.688689.roundUsing(Math.ceil, 1) 6.7 > 6.688689.roundUsing(Math.round, 1) 6.7 > 6.688689.roundUsing(Math.floor, 1) 6.6


Si usa Browserify hoy, tendrá que probar: roundTo a NPM lib muy útil


Utilice la función de toFixed() .

(6.688689).toFixed(); // equal to 7 (6.688689).toFixed(1); // equal to 6.7 (6.688689).toFixed(2); // equal to 6.69


Vea abajo

var original = 28.59;

var result=Math.round(original*10)/10 te devolverá 28.6

Espero que esto sea lo que quieres ..


> +(6.688687).toPrecision(2) 6.7

Un objeto Number en JavaScript tiene un método que hace exactamente lo que necesitas. Ese método es Number.toPrecision([precision]) .

Al igual que con .toFixed(1) , convierte el resultado en una cadena y debe volver a convertirse en un número. Hecho usando el prefijo + aquí.

simple punto de referencia en mi computadora portátil:

number = 25.645234 typeof number 50000000 x number.toFixed(1) = 25.6 typeof string / 17527ms 50000000 x +(number.toFixed(1)) = 25.6 typeof number / 23764ms 50000000 x number.toPrecision(3) = 25.6 typeof string / 10100ms 50000000 x +(number.toPrecision(3)) = 25.6 typeof number / 18492ms 50000000 x Math.round(number*10)/10 = 25.6 typeof number / 58ms string = 25.645234 typeof string 50000000 x Math.round(string*10)/10 = 25.6 typeof number / 7109ms


Number((6.688689).toFixed(1)); // 6.7


float(value,ndec); function float(num,x){ this.num=num; this.x=x; var p=Math.pow(10,this.x); return (Math.round((this.num).toFixed(this.x)*p))/p; }


var number = 6.688689; var roundedNumber = Math.round(number * 10) / 10;