1

有两个值'a'和'b'。我需要检查 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

它忽略了点值,因为您在条件 if 语句中将它们解析为整数。你有几个选择。

  1. 将变量定义为浮点数而不是字符串;删除 parseInt 函数调用。
  2. 将parseInt交换为parseFloat调用。
于 2013-02-21T22:21:04.130 回答
0

将您的数字定义为数字,并删除对 parseInt 的调用或使用 parseFloat。

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

或者

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

在这里,您的解决方案是将字符串解析为浮点数而不是整数。例如:

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

您的代码现在将字符串解析为整数。整数是整数值,不能包含十进制值,同时浮点数或浮点数可以包含十进制值。当您在浮点上调用 'parseInt()' 时,它会截断(或删除)十进制值并仅保留整个值。这显然不是你要找的。

PS:我猜你是 JavaScript 新手,所以我只想祝你学习好运。就个人而言,如果你学得好,我发现 JavaScript 是一门非常漂亮的语言。

于 2013-02-21T22:23:24.970 回答