これは簡単なシナリオです。私のサイトに表示されている2つの値の減算を表示したい:
//Value on my websites HTML is: "75,00"
var fullcost = parseFloat($("#fullcost").text());
//Value on my websites HTML is: "0,03"
var auctioncost = parseFloat($("#auctioncost").text());
alert(fullcost); //Outputs: 75
alert(auctioncost); //Ouputs: 0
誰が私が間違っているのか教えてもらえますか?
これは「設計による」です。 parseFloat
関数は、inが+、-、数字、指数、または小数点以外に達するまで、文字列の部分のみを考慮します。カンマが見つかると、検索を停止し、「75」部分のみを考慮します。
これを修正するには、コンマを小数点に変換します。
var fullcost = parseFloat($("#fullcost").text().replace(',', '.'));
javascriptのparseFloatはロケールパラメータを取りません。したがって、,
を.
に置き換える必要があります
parseFloat('0,04'.replace(/,/, '.')); // 0.04
parseFloat
JavaScriptに従って解析 ロケールの定義ではなく、10進リテラルの定義 (たとえば、parseFloat
はロケールを認識しません。)JavaScriptの10進リテラルは、小数点に.
を使用します。
グローバル化を使用しないのはなぜですか?これは、英語を使用していないときに実行できる問題の1つにすぎません。
Globalize.parseFloat('0,04'); // 0.04
調べるべきstackoverflowのリンク:
@ -JaredParが his answer で指摘したように parseFloat
置換あり
var fullcost = parseFloat($("#fullcost").text().replace(',', '.'));
comma
をdot
に置き換えるだけで修正されます。Unless1.000.000,00
のような数千を超える数は、この方法で間違った数字を与えます。したがって、comma
を置き換えてdots
を削除する必要があります。
// Remove all dot's. Replace the comma.
var fullcost = parseFloat($("#fullcost").text().replace(/\./g,'').replace(',', '.'));
2つの置換を使用すると、出力で間違った数字を受け取ることなくデータを処理できます。
JSの数字は、.
(コンマ)ではなく小数点を示すために,
(ピリオド/ピリオド)文字を使用します。
100万1,234,567の場合、この構文を使用してすべてのコンマを置き換えることをお勧めします
var string = "1,234,567";
string = string.replace(/[^\d\.\-]/g, "");
var number = parseFloat(string);
console.log(number)
g
は、すべてのコンマを削除することを意味します。
Jsfiddle demo here を確認してください。