【问题标题】:How to format a number to money format in javascript如何在javascript中将数字格式化为货币格式
【发布时间】:2020-07-18 23:20:36
【问题描述】:

我有一个数字,我想输入货币格式,巴西货币。我通常使用这样的格式:

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

但这会返回一个字符串,我希望它返回一个数字,这样我就可以使用 chart.js 构建图表。 尝试使用 toLocaleString('pt-BR'),但返回 9.990.220,32 的值返回 9.99。

【问题讨论】:

  • 这能回答你的问题吗? How to format numbers as currency string?
  • 任何以货币符号(例如“$”)开头的东西都将是一个字符串,并且不能(轻易)被强制转换为数字。为什么不直接使用that.totalSales 的值在你改变它之前,这显然是一个数字?
  • 它是一个数字,但是一个非常大的数字 kkkkk,它是 11786775.13,我需要显示为像 11.786.775,13 这样的钱

标签: javascript format number-formatting


【解决方案1】:

您可以简单地使用 npm 上的 number-to-currency 包,它通过一个命令将数字转换为货币字符串。

使用方法:

首先通过 npm 或 yarn 安装:npm install number-to-currency

const formatter = require("number-to-currency")

formatter(2000) -> 2,000

【讨论】:

    【解决方案2】:

    这是一个可以做到这一点的函数,它可能可以写得更短更好,但这是我想出的:

    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
    

    【讨论】:

    • @GustavoOliveira 如果这回答了你的问题,请标记它
    猜你喜欢
    • 1970-01-01
    • 2016-10-01
    • 2015-08-03
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多