The .toFixed
may not solve the problem, because in some cases it will "round" some values and what you seem to need is to trim the number, so what you need is treat as string
Possibly your the goal is to add a zero to "front" too, in addition to trimming the decimal places, as I believe you intend to display this to the user, then an example that would not round:
var x = 268.25,
y = 5.36,
z = 1.01;
console.log("Calculo:", x - y + z);
var para_exibir = String(x - y + z) + "0";
console.log("Para o usuário/imprimir:", para_exibir);
Of course, if the value is something like 2.9999
will have to trim, so you can use a function to check if the decimal size is larger than "a house" and so trim or complete the string, for example:
function formatar(f, precisao) {
f = String(f);
var i = f.indexOf(".");
if (i > -1) {
var d = f.substr(i + 1), //Pega somente as casas decimais
n = f.substr(0, i + 1); //Pega o valor "inteiro"
if (d.length < precisao) { // Se for menor que duas casas adiciona o zero
f = n + d + ("0".repeat(precisao - 1)); /*o -1 é porque neste caso já deve ter um digito na casa, então só adiciona os zeros que faltam*/
} else if (d.length > precisao) { // Se for maior que duas casas apara a string sem arredondar o valor
f = n + f.substr(i + 1, precisao);
}
}
return f;
}
The use is:
formatar ( int valor , int precisao )
Example:
var x = 268.25,
y = 5.36,
z = 1.01;
function formatar(f, precisao) {
f = String(f);
var i = f.indexOf(".");
if (i > -1) {
var d = f.substr(i + 1),
n = f.substr(0, i + 1);
if (d.length < precisao) {
f = n + d + ("0".repeat(precisao - 1));
} else if (d.length > precisao) {
f = n + f.substr(i + 1, precisao);
}
}
return f;
}
//Com "precisão" de duas casas
console.log("10.9999 formatado:", formatar(10.9999, 2) );
console.log("10.9 formatado:", formatar(10.9, 2) );
console.log("10.99 formatado:", formatar(10.99, 2) );
console.log("x - y + z formatado:", formatar(x - y + z, 2) );
console.log("-----------");
//Com "precisão" de três casas
console.log("10.4445 formatado:", formatar(10.4445, 3) );
console.log("10.4 formatado:", formatar(10.4, 3) );
console.log("10.455 formatado:", formatar(10.455, 3) );
console.log("x - y + z formatado:", formatar(x - y + z, 3) );
Have you tried using the javascript native toFixed function?
– Têco
What are the values you pass on
num
andfixed
?– David Alves
The native "toFIxed" function does not solve your problem?
– Lucas Brogni