값이 숫자 범위 내에 있는지 확인


110

값이 허용되는 범위에 있는지 확인하고 싶습니다. 그렇다면 무언가를하십시오. 그렇지 않으면 다른 것.

범위는 0.001-0.009입니다. 나는 if이것을 확인 하기 위해 다중을 사용하는 방법을 알고 있지만 단일 if명령문 에서 확인할 방법이 있는지 알고 싶습니다 .


14
&&운영자? ...
Šime Vidas 2011-06-23

답변:


218

숫자 비교에 대해 질문하고 있으므로 정규 표현식은 실제로 문제와 관련이 없습니다. if이를 수행하기 위해 "다중 "문이 필요하지 않습니다 .

if (x >= 0.001 && x <= 0.009) {
  // something
}

"between ()"함수를 직접 작성할 수 있습니다.

function between(x, min, max) {
  return x >= min && x <= max;
}
// ...
if (between(x, 0.001, 0.009)) {
  // something
}

귀하의 코딩은 좋지만 질문에 맞지 않습니다. 불쾌하지 않습니다. 나는 항상 질문에 대한 답이 얼마나 좋은지에 따라 해결책을 판단합니다. 그것은 일반적으로 사람들이 그들이 무엇을 요구하는지 알고 있다고 가정하기 때문입니다. 체크 표시는이 질문자의 경우가 아님을 보여줍니다.
레이프

7
글쎄, 나는 당신이 말하는 것에 감사하지만 여기 사람들이 일반적으로 "그들이 요구하는 것을 안다"는 전제를 재고하고 싶을 것을 제안합니다. 이는 매우 좁은 의미 에서 사실 일 수 있지만 이러한 질문은 종종 재검토해야하는 잘못된 설계 결정을 반영합니다. 저는 약 30 년 동안 프로그래밍 질문에 답해 왔기 때문에 이런 일이 여러 번 발생하는 것을 보았습니다. 물론 전반적인 목표가 명확하게 설명 된 더 나은 질문을 선호합니다. 여기서 우리 는 질문 에 대한 이유 를 전혀 모르기 때문에 컨텍스트가 없습니다.
Pointy

6
나는 다음과 같은 구문을 사용하는 것을 좋아합니다. if (0.001 <= x && x <= 0.009) {...}가 나에게 조금 더 명확 해 보입니다. :)
Omri

50

다음은 단일 비교 옵션입니다.

// return true if in range, otherwise false
function inRange(x, min, max) {
    return ((x-min)*(x-max) <= 0);
}

console.log(inRange(5, 1, 10));     // true
console.log(inRange(-5, 1, 10));    // false
console.log(inRange(20, 1, 10));    // false

이것은 달콤합니다. min이 더 낮거나 max가 더 낮더라도 여전히 작동합니다. 사실 min, max를 start, end와 같이 호출하는 것이 더 나을 수 있습니다. 어느 쪽이든 감사합니다!
James Harrington

19

당신이 경우 해야한다 regexp와를 사용 (정말, 당신은해야하지!)이 작동합니다 :

/^0\.00([1-8]\d*|90*)$/

작동해야합니다. 즉

  • ^ 전에는 아무것도 없었습니다.
  • 뒤에 0.00(nb : .문자에 대한 백 슬래시 이스케이프 )
  • 그 뒤에 1 ~ 8 및 추가 숫자
  • 또는 9, 임의의 수의 0
  • $: 뒤에 아무것도 없음

8

이미을 사용하고 있다면 https://lodash.com/docs/4.17.15#inRange 함수를 lodash사용할 수 있습니다 inRange().

_.inRange(3, 2, 4);
// => true

_.inRange(4, 8);
// => true

_.inRange(4, 2);
// => false

_.inRange(2, 2);
// => false

_.inRange(1.2, 2);
// => true

_.inRange(5.2, 4);
// => false

_.inRange(-3, -2, -6);
// => true

3

저는 Pointy의 between기능을 좋아해서 제 시나리오에 잘 맞는 비슷한 기능을 작성했습니다.

/**
 * Checks if an integer is within ±x another integer.
 * @param {int} op - The integer in question
 * @param {int} target - The integer to compare to
 * @param {int} range - the range ±
 */
function nearInt(op, target, range) {
    return op < target + range && op > target - range;
}

따라서 x± 10 범위 내에 있는지 확인하려면 y:

var x = 100;
var y = 115;
nearInt(x,y,10) = false

모바일에서 길게 누르는 것을 감지하는 데 사용하고 있습니다.

//make sure they haven't moved too much during long press.
if (!nearInt(Last.x,Start.x,5) || !nearInt(Last.y, Start.y,5)) clearTimeout(t);

1

코드에서 특정 범위의 자릿수를 선택하도록하려면 &&대신 연산자 를 사용해야 합니다 ||.

if (x >= 4 && x <= 9) {
  // do something
} else {
  // do something else
}

// be sure not to do this

if (x >= 4 || x <= 9) {
  // do something
} else {
  // do something else
}


0

조건을 작성하기 전에 하한과 상한을 결정해야합니다.

function between(value,first,last) {

 let lower = Math.min(first,last) , upper = Math.max(first,last);
 return value >= lower &&  value <= upper ;

}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.