Как отформатировать число в денежный формат в javascript - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть номер, и я хочу перевести деньги в бразильские деньги. Я обычно использую такой формат:

that.totalSales = numeral(that.totalSales).format("$ 0,0.00");

, но это возвращает строку, и я хочу, чтобы она возвращала число, чтобы я мог построить диаграмму с диаграммой. js. Он пытался использовать toLocaleString ('pt-BR'), но значение, которое должно было вернуть 9.990.220,32, что возвращает 9.99.

1 Ответ

0 голосов
/ 07 апреля 2020

Вот функция, которая делает это, возможно, она может быть написана намного короче и лучше, но это то, что я придумал:

const formatNumber = (number, decimals = 2, floatSeparator = '.', separator = ',') => {
    let stringified = number.toString();
    let [ decimal, float ] = stringified.split('.');
    let result = "";
    if(decimal.length > 3) {
        decimal = decimal.split("").reverse();
        for(let i = 0; i < decimal.length; i++) {
            result += decimal[i];
            if((i + 1)%3 === 0 && i !== decimal.length - 1) {
                result += separator;
            }
        }
    }
    result = result.split("").reverse().join("");
    if(float) {
        result += floatSeparator;
        if(float.length >= decimals) {
            for(let i = 0; i < decimals; i++) {
                result += float[i];
            }
        }
        else {
            for(let i = 0; i < decimals; i++) {
                if(i < float.length) {
                    result += float[i];
                }
                else {
                    result += '0';
                }
            }
        }
    }
    return result;
}

let n1 = 1000;
let n2 = 1000.5;

console.log(formatNumber(n1)); // 1,000
console.log(formatNumber(n2)); // 1,000.50
...