JavaScript:始终从函数返回.toFixed(2)(货币支持)

时间:2016-01-24 05:22:51

标签: javascript node.js floating-point numbers currency

Node / JavaScript中是否有一种方式表示应始终使用.toFixed(2)返回变量。 I.E.货币类型。

请参阅以下示例函数:

let PER_SHARE_COMMISSION = 0.005; // USD
let MINIMUM_COMMISSION_PER_ORDER = 1.00; // USD
let MAXIMUM_PERCENT_OF_ORDER = 0.005; // 0.5%

exports.commission = function(price, shares) {
    let commish = shares * PER_SHARE_COMMISSION;

    if(commish < MINIMUM_COMMISSION_PER_ORDER) {
        return MINIMUM_COMMISSION_PER_ORDER.toFixed(2);
    }

    var maxCommish = shares * price * MAXIMUM_PERCENT_OF_ORDER;
    if(commish > maxCommish) {
        return maxCommish.toFixed(2);
    }

    return commish.toFixed(2);
};

了解在返回值之前我必须手动将.toFixed(2)置于任何位置。这很容易出错。这周围有模式吗?

1 个答案:

答案 0 :(得分:0)

这基本上是我正在寻找的解决方案:

currency(1) // "1.00"
currency(23.3433) // "23.34"
currency(87.3987) // "87.40"
currency(12342.453) // "12342.45"

function currency(input) {
    return new Intl.NumberFormat('en-US', {
        style: 'decimal',
        currency: 'USD',
        minimumFractionDigits: 2,
        maximumFractionDigits: 2,
        useGrouping: false
    }).format(input);
}