如何比较javascript中的负数

时间:2016-05-04 05:51:12

标签: javascript jquery underscore.js

我想比较-180到180之间的验证范围。 如果number小于-180且大于180,那么它应该显示错误。

我在下面写了代码 -

 if((markerPoint[0] && parseInt(markerPoint[0],10) < -180 || parseInt(markerPoint[0],10) > 180)) {
        this.latlngError.push("Invalid coordinates");
    } else {
        this.isLanLngValid = true;
    }

但是这回到了不正确的比较。

5 个答案:

答案 0 :(得分:0)

您可以改为使用Math.abs()

if (markerPoint[0] && Math.abs(parseInt(markerPoint[0],10)) > 180)

编辑:正如@TedHopp所指出的,当前代码的可见问题似乎是运算符优先级。 &&higher precedence而不是||。使用Math.abs()可以绕过问题。

如果这不能解决问题,则需要提供更多代码进行调试。

答案 1 :(得分:0)

  

我想比较-180到180之间的验证范围

对于介于-180和180之间的数字,数字必须大于-180且小于180,因此请更改比较。

if(markerPoint[0] && parseInt(markerPoint[0],10) > -180 && parseInt(markerPoint[0],10) < 180) {

答案 2 :(得分:0)

试试这个JsFiddle

var answer = prompt("type a number");
func();
function func() {
  if (answer>=-180&&answer<=180) {
    alert("Yes! We made it!");
  } else {
    answer = prompt("Invalid try agian");
    func();
  }
}

答案 3 :(得分:0)

将以下代码替换为肯定会有效。
if(markerPoint [0]&gt; = - 180&amp;&amp; markerPoint [0]&lt; = 180)

答案 4 :(得分:0)

您的代码存在的一个问题是,JavaScript &&的优先级高于||。 (参见表here。)因此,逻辑被评估为括号:

if (
    (markerPoint[0] && parseInt(markerPoint[0],10) < -180)
    ||
    parseInt(markerPoint[0],10) > 180)
{

您可以使用括号更改:

if(markerPoint[0] && (parseInt(markerPoint[0],10) < -180 || parseInt(markerPoint[0],10) > 180)) {

如果if是真值,并且评估范围超出范围[-180,180],那么markerPoint[0]测试将通过。