4

初めて JavaScript を試しています。私の目的は、小さな「コンフィギュレーター」を構築することです。私のページには、次の機能をトリガーする 2 つのボタンがありますonclick

function default()
{
 curPrice = parseFloat(document.getElementById('price').innerHTML);
 newPrice = curPrice-priceEngraving;
 document.getElementById('price').innerHTML=newPrice;
}

もう1つは次のようになります。

function engrave()
{
var str = document.getElementById('price').innerHTML;
newPrice = curPrice+priceEngraving;
document.getElementById('price').innerHTML=newPrice;
}

priceEngravingは 1 として定義され、#price の「デフォルト」innerHtmlは 5.30 です。ボタン 1 を押すと、次の結果が表示されます:
6.3

これは問題なく、期待どおりの結果です (末尾に 0 を追加することはそれほど難しくありません)。

ボタン #2 を起動すると、次の結果が表示されます: 5.3000000000000004

コードのどこに問題があるのか​​ わかりません。私も試し++てみ--ました(ご存知のように、価格は変更される可能性があるため、私は好みません)。

また、JavaScript を使用する際のセキュリティ上の懸念については知っていますが、これは光学的なものだけです。

4

2 に答える 2

1

問題は、一部の数値が浮動小数点数として正確に表現できないことです。常に小数点以下 2 桁が必要な場合は、数字でメソッドtoFixed(2)(ドキュメント) を使用できます。

document.getElementById('price').innerHTML=newPrice.toFixed(2);
于 2012-10-12T19:09:33.087 に答える
0

浮動小数点の問題があります。詳細については、この投稿を参照してください。問題はそこで詳しく説明されています。基本的に、持っているものを十分に正確にマッピングする方法はありません。

于 2012-10-12T19:06:25.497 に答える