1

'a' と 'b' の 2 つの値があります。a が 'b' より大きいことを確認する必要があります

大きな値の場合は、より大きな値をチェックします。ただし、ここではポイント値のみの違いです。ポイント値を無視します

var a='20.796';
var b='20.190';
if (parseInt(a) > parseInt(b))
 {
alert("function can work");
return false;
}
4

4 に答える 4

1

数値を整数として解析します。代わりに有理数/実数が必要です。使用parseFloat:

var a = '20.796';
var b = '20.190';
console.log(parseInt(a,10),parseInt(b,10));
console.log(parseFloat(a),parseFloat(b));

結果:

20 20
20.769 20.190

また、 を使用するradix場合は必ず引数を使用してくださいparseInt(string [, radix])

さらに、abが数値の場合、それらの値を文字列に保存しないでください。代わりに値を保存する方がはるかに簡単です。

var a = 20.796;
var b = 20.190;
于 2013-02-21T22:19:22.177 に答える
0

ここでの解決策は、文字列を整数ではなく浮動小数点として解析することです。例えば:

var a = '20.796',
    b = '20.190';
if (parseFloat(a) > parseFloat(b)) {
    // TODO: .. code ..
}

現在のコードは、文字列を整数として解析しています。整数は整数値であり、10進値を含めることはできませんが、浮動小数点数または浮動小数点数には10進値を含めることができます。浮動小数点で'parseInt()'を呼び出すと、10進値が切り捨てられ(または削除され)、値全体が保持されます。これは明らかにあなたが探しているものではありません。

PS:JavaScriptは初めてだと思いますので、JavaScriptを習得して頑張ってください。個人的には、JavaScriptを上手に学べば、非常に美しい言語だと思います。

于 2013-02-21T22:23:24.970 に答える
0

It's ignoring point values because you are parsing them as integers in the if statement conditional. You have a couple options.

  1. Define the variables as floats instead of strings; remove the parseInt function calls.
  2. Exchange the parseInt for parseFloat calls.
于 2013-02-21T22:21:04.130 に答える
0

Define your numbers as numbers, and remove the call to parseInt or use parseFloat.

var a=20.796;
var b=20.190;
if (a > b)
{
    alert("function can work");
    return false;
}

or

if (parseFloat(a) > parseFloat(b))
{
    alert("function can work");
    return false;
}
于 2013-02-21T22:21:09.043 に答える