2

だから私はjavascriptアプリケーションを書いています。基本的に、ある数値が別の数値よりも大きい場合、それらの値を交換したいと思います:

if(price1 > price2)
{
  var temp = price1;
  price1 = price2;
  price2 = temp;
}

これは、ある時点までは問題なく機能しますが、数値が大きくなり始めると、次のようになります。

price1: 12345678
price2: 234556

その後、式は false と評価され、何もしません。問題が何であるかを知っている人はいますか?ありがとう!

4

3 に答える 3

4

これらは数値として比較されていますか?たとえば、コードを次のように変更すると、

if (+price1 > +price2) {
    var temp = price1;
    price1 = price2;
    price2 = temp;
}

それは機能しますか?その場合、price1price2は文字列であり、プレフィックスは+それらを数値に変換します。

于 2012-01-19T06:43:16.520 に答える
1

数字をテストしていると確信していますか?

述べたように、指定した値は、その種のエラーを正当化するほど大きくはありません。値は辞書順 (文字列として) でテストされるように思えます。

それに応じてコードを変更します

if(Number(price1) > Number(price2)) {
    var temp = price1;
    price1 = price2;
    price2 = temp;
}
于 2012-01-19T06:47:41.693 に答える
0

私は両方がprice1&であると仮定してprice2いますints

正確には、 の精度が必要です+/- 9007199254740992

于 2012-01-19T06:40:44.490 に答える