如何在javascript中比较负数

6ojccjat  于 2023-01-04  发布在  Java
关注(0)|答案(5)|浏览(222)

我想比较-180至180之间的验证范围。如果数字小于-180且大于180,则应显示错误。
我写了下面的代码-

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

但这是返回不正确的比较。

h22fl7wq

h22fl7wq1#

我想比较-180至180之间的验证范围
对于介于-180和180之间的数字,该数字必须大于-180且小于180,因此请更改比较。

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

8cdiaqws2#

试试这个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();
  }
}
sy5wg1nm

sy5wg1nm3#

替换下面的代码,它肯定会工作。

如果(标记点[0]〉=-180且标记点[0]〈=180)

093gszye

093gszye4#

代码的一个问题是,在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)) {

如果markerPoint[0]是一个真实值,并且其计算结果超出范围[-180,180],则if测试将通过。

44u64gxh

44u64gxh5#

您可以改用Math.abs()

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

编辑:正如@TedHopp所指出的,当前代码的明显问题似乎是运算符优先级。&&||具有higher precedence。使用Math.abs()可以绕过这个问题。
如果这不能解决问题,那么需要提供更多的代码进行调试。

相关问题