Me gustaría formatear mis números decimales para mostrar 2 lugares decimales, pero .00 siempre se ocultará.
ejemplo
value expect return ------ ------- ------ 1.00 1 1.00 1 1 1.00 1.6 1.60 1.60 1.451 1.45 1.45
Mi código
Vue.filter("currency", value => { return parseFloat(value).toFixed(2); });Retire .00 del final si existe:
return parseFloat(value).toFixed(2).replace(/\.00$/, '')Simplemente puede poner toFixed EN parseFloat de esta manera:
Vue.filter("currency", value => { return parseFloat(value.toFixed(2)) });toFixed redondeará/rellenará el número a una longitud específica, pero también lo convertirá en una cadena. Convertir eso de nuevo a un tipo numérico no solo hará que el número sea más seguro de usar aritméticamente, sino que también eliminará automáticamente cualquier 0 final.
Referencia: https://newbedev.com/remove-insignificant-trailing-zeros-from-a-number
Actualizar
Esta solución no considera el caso: 1.6 -> 1.60 (verifique jsfiddle en el comentario)
Simplemente verifique si el número es un número entero al verificar el recordatorio en la división con 1
Vue.filter("currency", value => { return parseFloat(value) % 1 === 0 ? parseFloat(value).toString() : parseFloat(value).toFixed(2); });