Estoy buscando una manera de eliminar los últimos dígitos de una entrada con coma si el valor es más de 4.
Ejemplo:
Valor: 13,314556 debería ser -> 13,3145.
¿Hay alguna forma de eliminar todo y luego los últimos 4 dígitos de este número con algo como esto?
let value = 13,314556 let result= value.split(',')[1].trim(); if(result.length > 4){ ... } Puede llamar a toFixed() para formatear el número a una cantidad de lugares decimales.
Consulte la documentación de MDN para toFixed()
Modificado del ejemplo dado en la documentación anterior:
function myFormat(x) { return Number.parseFloat(x).toFixed(4); } // expected output: "13.3146" because of rounding console.log(myFormat(13.314556)); // expected output: "0.0040" console.log(myFormat(0.004)); // expected output: "123000.0000" console.log(myFormat('1.23e+5'));Si no desea redondear, simplemente sea más preciso y recorte el extremo de la cadena resultante.
function myFormat(x) { return Number.parseFloat(x).toFixed(6).replace(/\d\d$/, ''); } // expected output: "13.3145", will not do rounding console.log(myFormat(13.314556));Si está trabajando con moneda o realiza cálculos importantes similares, considere trabajar con una biblioteca como decimal.js .
La alternativa es multiplicar por 10000, bajarlo al piso y luego dividir por 10000.
let value = 13.314556; value=Math.floor(value*10000)/10000; console.log(value)o si desea controlar la cantidad de dígitos mediante programación, podría usar algo como esto:
let value = 13.314556; value=Math.floor(value*Math.pow(10, 4))/Math.pow(10, 4); console.log(value)Lo haría con los métodos de corte y unión .
Rebanada para cortar la cuerda con la longitud que desee
Únete para volver a crear el número como desees
Agregué verificar si la coma está en el número y también un parámetro con la longitud deseada
function splitNumber(num, nbAfterComa) { const number = num.toString() if(!number.includes('.')){ return number } const splitedValue = number.split('.') splitedValue[1] = splitedValue[1].trim().slice(0, nbAfterComa); return nbAfterComa > 0 ? splitedValue.join(',') : splitedValue[0] } console.log(splitNumber(13.314556, 4)) console.log(splitNumber(13.3, 4)) console.log(splitNumber(13.314556, 1)) console.log(splitNumber(13.314556, 0)) console.log(splitNumber(13, 8))