2016-01-24 42 views
0

Node/JavaScript中是否有方法表示始终应该使用.toFixed(2)返回变量。 I.E.货币类型。JavaScript:从函数(货币支持)总是返回.toFixed(2)

请看下面的例子功能:

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

*您可以*创建一个包装功能部件..或改变功能,使得只有一个'return'点。我不太确定我会打电话给那些'模式'。取决于如何使用此功能,使用*下游过滤器*可能更合适:例如。 UI控件(或各种框架绑定之一)显示/映射适当的货币表示。 (合约应该是委托函数仍然可以根据货币分辨率适当返回一个值。) – user2864740

+0

在javascript中没有函数“返回类型”的概念,所以没有 –

回答

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); 
} 
+2

它不能是数字,因为数字不会保持尾部零点处于浮动状态(同样它不会保留整数部分中的前导零) –

+1

如果这不是您的问题的答案,则不应将其作为“答案”发布。您可以编辑您的原始问题以包含此信息,以使您的问题更加精确。或删除“but ...”的评论,将其标记为答案,然后将“but ...”作为新问题发布。 –