Eu tinha basicamente o mesmo requisito e descobri que não há mecanismo interno para essa funcionalidade.
Além de aparar os zeros à direita, também tive a necessidade de arredondar e formatar a saída para a localidade atual do usuário (ou seja, 123.456.789).
Todo o meu trabalho sobre isso foi incluído como prettyFloat.js (MIT licenciado) no GitHub: https://github.com/dperish/prettyFloat.js
Exemplos de uso:
prettyFloat(1.111001, 3) // "1.111"
prettyFloat(1.111001, 4) // "1.111"
prettyFloat(1.1111001, 5) // "1.1111"
prettyFloat(1234.5678, 2) // "1234.57"
prettyFloat(1234.5678, 2, true) // "1,234.57" (en-us)
Atualizado - agosto de 2018
Todos os navegadores modernos agora oferecem suporte à API de Internacionalização do ECMAScript , que fornece comparação de strings sensíveis ao idioma, formatação de números e formatação de data e hora.
let formatters = {
default: new Intl.NumberFormat(),
currency: new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: 0, maximumFractionDigits: 0 }),
whole: new Intl.NumberFormat('en-US', { style: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 }),
oneDecimal: new Intl.NumberFormat('en-US', { style: 'decimal', minimumFractionDigits: 1, maximumFractionDigits: 1 }),
twoDecimal: new Intl.NumberFormat('en-US', { style: 'decimal', minimumFractionDigits: 2, maximumFractionDigits: 2 })
};
formatters.twoDecimal.format(1234.5678); // result: "1,234.57"
formatters.currency.format(28761232.291); // result: "$28,761,232"
Para navegadores mais antigos, você pode usar este polyfill: https://cdn.polyfill.io/v2/polyfill.min.js?features=Intl.~locale.en
1.234000 === 1.234
.