2016-09-09 4 views
0

私は数字がであり、ドルでフォーマットする必要があります。数値をドルに換算する

例1:

5850 => $ 58.50

例2:

9280 => $ 92.80

私は次の関数を使用しています」:

Number.prototype.formatMoney = function(decPlaces, thouSeparator, decSeparator) { 
    var n = this, 
     decPlaces = isNaN(decPlaces = Math.abs(decPlaces)) ? 2 : decPlaces, 
     decSeparator = decSeparator == undefined ? "." : decSeparator, 
     thouSeparator = thouSeparator == undefined ? "," : thouSeparator, 
     sign = n < 0 ? "-" : "", 
     i = parseInt(n = Math.abs(+n || 0).toFixed(decPlaces)) + "", 
     j = (j = i.length) > 3 ? j % 3 : 0; 
    return sign + (j ? i.substr(0, j) + thouSeparator : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thouSeparator) + (decPlaces ? decSeparator + Math.abs(n - i).toFixed(decPlaces).slice(2) : ""); 
}; 

上記の機能は私に$ 5,850.00を与えます。

あなたはまだ少し下のようにそれを微調整することにより、ちょうど同じ方法を使用することができます
+3

文字列操作を使用するほうがよいでしょう。 5850を文字列に変換し、最後の2文字( "セント"になる)を消してから、残りのものにコンマを挿入します。完了した2つの部分を結合します。 –

+0

@MarcB hmmありがとう –

答えて

1

Number.prototype.formatMoney = function(decPlaces, thouSeparator, decSeparator) { 
    var n = this, 
     decPlaces = isNaN(decPlaces = Math.abs(decPlaces)) ? 2 : decPlaces, 
     decSeparator = decSeparator == undefined ? "." : decSeparator, 
     thouSeparator = '', 
     thouSeparator = thouSeparator == undefined ? "," : thouSeparator, 
     sign = n < 0 ? "-" : "", 
     i = parseInt(n = Math.abs(+n || 0).toFixed(decPlaces)) + "", 
     j = (j = i.length) > 3 ? j % 3 : 0; 
    return sign + (j ? i.substr(0, j) + thouSeparator : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thouSeparator) + (decPlaces ? decSeparator + Math.abs(n - i).toFixed(decPlaces).slice(2) : ""); 
}; 
0

あなたが

function dollars(n) { 
    return (n+"").replace(/(\d{0,2})(\d{2}).*/, "$$$1.$2") 
} 
のようなものを使用することができます4桁より長い数字のためにあまり気にしない場合
1

私はあなたのためにそれを扱うことができるライブラリを使う方が簡単だと思います。私はcurrencyFormatter.js(https://osrec.github.io/currencyFormatter.js/)を使用します。試してみてください。すべてのブラウザで動作し、かなり軽量です。また、あなたの通貨記号を追加し、指定されたロケールに応じてフォーマットすることができます。

OSREC.CurrencyFormatter.format(2534234, { currency: 'INR' }); 
// Returns ₹ 25,34,234.00 

OSREC.CurrencyFormatter.format(2534234, { currency: 'EUR' }); 
// Returns 2.534.234,00 € 

OSREC.CurrencyFormatter.format(2534234, { currency: 'EUR', locale: 'fr' }); 
// Returns 2 534 234,00 € 
関連する問題