2

データベースのお金のデータ型を表す 10 進数値を出力するビューがあります。出力するには、次のフォーマットコードを使用しています

string price = String.Format("{0:f}", (item.Price + item.VAT));

このような文字列を生成します

12,99 (with comma as the decimal separator)

私は現在、この文字列を使用して、jQuery を使用してクライアントで計算を行っています。

elmProductSelected.children("option").each(function(n) {
    var pIdx = $(this).attr("rel"); 
    var pObj = products.eq(pIdx);
    var pValue = $(this).attr("value");
    var valueArray = pValue.split('|');
    var prdId = valueArray[0];
    var pQty = valueArray[1];
    /* the value of pPrice is 12,99 after the following call */
    var pPrice =  $(pObj).attr(attrProductPrice);
    /* I get NaN here! */
    sTotal = sTotal + ((pPrice - 0) * (pQty - 0));
    cProductCount++;
    cItemCount = cItemCount + (pQty-0);
});

コメントした行でNaNを取得しています。これは、手動で設定するとすべてが機能pPriceするため、値が小数点としてコンマを使用していることが原因であると思います。12.99

12,99javascript/jQueryを使用して数値として読み取る方法はありますか?

4

6 に答える 6

3

NaN = 非数

を使用parseIntすることで、数値として扱う必要があることを Javascript に伝えることができます。

var pPrice = parseInt($(pObj).attr(attrProductPrice));

parseFloat小数を使用している場合に必要になることがあります。

于 2010-12-27T21:39:17.650 に答える
3

コードには 2 つの問題があります。まず、Webnet が示唆するように、文字列を float にキャストする必要があります。ただし、parseFloat 関数は、引数が小数点記号としてドットを使用することを期待します。したがって、次のコードはあなたが望むことを行います:

var pPrice = $(pObj).attr(attrProductPrice);
pPrice = parseFloat(pPrice.replace(',', '.'));

まず、カンマをドットに置き換えてから、結果を float に変換します。

于 2010-12-27T21:44:19.473 に答える
1

それが唯一のコンマ区切りである場合(千単位の区切り記号はありません)、それを置き換えてください。

var num = parseInt( str.replace( ',', '.' ) ); // or parseFloat

正しい解析を妨げる他の文字がある場合は、装飾されていない数字を格納するカスタム属性を使用することをお勧めします。

<input data-undecorated="123.45" value="123,45" />
var num = parseInt( $('#myInput').data('undecorated') ); // or parseFloat

data()またはそれ以降を使用している場合は、このように使用してdata-属性を取得できますjQuery 1.4.3

于 2010-12-27T21:42:04.093 に答える
1

この正規表現を試してください:

更新:部分を逃したため、式を変更しました(小数点記号としてコンマを使用)。

var pPrice = $(pObj).attr(attrProductPrice)..replace(/(,)(\d+)$/, ".$2").replace(",","")
于 2010-12-27T21:43:48.807 に答える
1

これを試して

var pPrice = $(pObj).attr(attrProductPrice).split(",").join(".");
于 2010-12-27T21:45:16.267 に答える
0

これは関連しているように見えます: How to convert string into float in javascript?

コンマを小数点に置き換える必要があるようです。

parseFloat('12,99'.replace(',', '.'))

于 2010-12-27T21:46:02.237 に答える