JavaScript文字列変数をdecimal / moneyに変換します


114

JavaScript文字列変数を10進数に変換するにはどうすればよいですか?

次のような機能はありますか?

parseInt(document.getElementById(amtid4).innerHTML)

回答:


240

はい- parseFloat

parseFloat(document.getElementById(amtid4).innerHTML);

以下のための書式番号、使用toFixed

var num = parseFloat(document.getElementById(amtid4).innerHTML).toFixed(2);

num これで、数値は小数点以下2桁でフォーマットされた文字列になります。


1
120.50のように、小数点を2つ持つ変数を作成できますか?現在、120.5のみを取得しています。
Varada、2011年

16
@PhilipWhitehouseを引用するには、「これを今後読む人は、浮動小数点を使用して通貨を保存しないでください。精度とデータが失われます。セント(またはペニーなど)の整数として保存してから、前の値に変換してください。出力します。」出典:stackoverflow.com/questions/149055/...
SSHこの

@SSHThis私が知っている限り、JavaScriptには整数型がありません。すべて64ビットの浮動小数点数として内部的に保存されるNumberタイプのみです。あなたの主張は、C#、C ++などの整数型を持つ他の言語では有効ですが、実際にはJavaScriptでは有効ではありません。
Simon Brangwin、2015

1
@SimonBrangwin彼の主張はまだ有効ですが、セマンティクスは混乱を招く可能性があります。彼が実際に意味することは、「通貨は浮動小数点数として格納されるため、JavaScriptでは整数としてのみ通貨を格納すること」です。
Josh Noe 2017

ただの注意:parseFloat('22w')is 22and parseFloat('w22')isNaN
IG Pascual

65

Numberコンストラクタ/関数を使用することもできます(基数は必要なく、整数と浮動小数点の両方に使用できます)。

Number('09'); /=> 9
Number('09.0987'); /=> 9.0987

または、アンディEがコメントで言ったように+、変換に使用できます

+'09'; /=> 9
+'09.0987'; /=> 9.0987

これはIE11でサポートされていません
パンツ

@Pants はES6のNumber組み込みオブジェクトの拡張に関するものであり、使用できることについてではありませんNumber
KooiInc

11

これは機能します:

var num = parseFloat(document.getElementById(amtid4).innerHTML, 10).toFixed(2);


2

数字を比較して遊ぶためにJavaScript関数に依存することはかなり危険です。JavaScript(0.1 + 0.2 == 0.3)では、丸めエラーのためにfalseが返されます。math.jsライブラリを使用します。


1

+ xを使用するのが簡単な簡単な方法です。10進数だけでなく符号もそのまま保持します。もう1つの方法は、parseFloat(x)を使用することです。parseFloat(x)と+ xの違いは、空の文字列の場合です+ xは0を返しますが、parseFloat(x)はNaNを返します。


1

これを行うための小さなヘルパー関数を作成し、すべての不正なデータをキャッチしました

function convertToPounds(str) { 
    var n = Number.parseFloat(str);
    if(!str || isNaN(n) || n < 0) return 0;
    return n.toFixed(2);
}

デモはこちら

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.