2016-01-24 72 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 ...」作爲新問題發佈。 –