수학 연산자 *, /, +,-, ^를 사용하여 0이 아닌 숫자를 1로 변환 할 수 있습니까?
난 단지 추가, 뺄셈, 곱셈 연산자 자바 스크립트 표현식을 지원하는 분할 소프트웨어 (오라클 시벨)와 함께 작업하고 있어요 XOR ( *
, /
, -
, +
, ^
). 나는 다른 연산자 등이없는 !
또는 ? :
사용할 수 있습니다.
위의 연산자를 사용하면 숫자가 0이 아닌 경우 1로 변환하고 이미 0이면 0으로 남겨 둘 수 있습니까? 숫자는 양수, 0 또는 음수 일 수 있습니다.
예:
var c = 55;
var d; // d needs to set as 1
시도 c / c
했지만 0 일 NaN
때 평가됩니다 . 0 일 때 c
0 d
이어야합니다 c
.
c는 통화 값이며 최대 두 개의 후행 숫자와 12 개의 선행 숫자를 갖습니다.
if
숫자를 부울 0 또는 1로 변환 한 다음 표현식의 다른 부분을 곱하여 조건 을 에뮬레이션하려고합니다 .
c / (c + 5e-324)
작동해야합니다. (상수 5e-324
는 Number.MIN_VALUE
가장 작은 대표 양수입니다.) x가 0 인 경우, 정확히 0이며 x가 0이 아닌 경우 (기술적으로 x가 최소 4.45014771701440252e-308 인 경우 0이 아닌 가장 작은 숫자는 질문, 0.01, is), JavaScript의 부동 소수점 수학은 답이 1과 다르기 때문에 너무 부정확하므로 정확히 1로 나옵니다.
표현식을 사용하십시오 n/n^0
.
경우 n
0이 아닌 :
Step Explanation
------- -------------------------------------------------------------------------------
n/n^0 Original expression.
1^0 Any number divided by itself equals 1. Therefore n/n becomes 1.
1 1 xor 0 equals 1.
n
0 인 경우 :
Step Explanation
------- -------------------------------------------------------------------------------
n/n^0 Original expression.
0/0^0 Since n is 0, n/n is 0/0.
NaN^0 Zero divided by zero is mathematically undefined. Therefore 0/0 becomes NaN.
0^0 In JavaScript, before any bitwise operation occurs, both operands are normalized.
This means NaN becomes 0.
0 0 xor 0 equals 0.
보시다시피, 0이 아닌 모든 값은 1로 변환되고 0은 0으로 유지됩니다. 이는 JavaScript에서 0이라는 사실을 활용합니다 NaN^0
.
데모:
[0, 1, 19575, -1].forEach(n => console.log(`${n} becomes ${n/n^0}.`))
(((c/c)^c) - c) * (((c/c)^c) - c)
음수 및 양수의 경우 항상 1을, 0의 경우 0을 반환합니다.
선택한 답변보다 더 혼란스럽고 더 길다. 그러나 나는 덜 해 키고 상수에 의존하지 않는 것처럼 느낍니다.
편집 : @JosephSible이 언급했듯이 상수를 사용하지 않는 더 컴팩트 한 버전의 내 버전과 @CRice 버전은 다음과 같습니다.
c/c^c-c
매우 복잡한 답변이지만 제한된 정밀도에 의존하지 않는 답변 :을 가져 가면 x가 0이면 x^(2**n)
항상 x+2**n
같지만 x-2**n
x가 n 번째 자리에 하나 있으면 x와 같습니다 . 따라서 x = 0의 경우 (x^(2**n)-x+2**n)/(2**(n+1)
항상 1이지만 x! = 0의 경우 0이됩니다. 따라서 (x^(2**n)-x+2**n)/(2**(n+1)
모든 n 이상의 곱을 취하면 1로 XOR하면 원하는 기능을 얻을 수 있습니다. 그러나 각 요소를 수동으로 코딩해야합니다. 부동 소수점을 사용하는 경우이를 수정해야합니다.
==
운영자 가 있으면 (x==0)^1
작동합니다.
'development' 카테고리의 다른 글
Rails에서 언제 "has_many : through"관계를 사용해야합니까? (0) | 2020.07.21 |
---|---|
GitHub README.md에서 이미지를 나란히 표시하려면 어떻게해야합니까? (0) | 2020.07.21 |
jQuery가 태그 이름을 제공 할 수 있습니까? (0) | 2020.07.21 |
EC2 : sudo node 명령을 찾을 수 없지만 sudo가없는 노드는 정상입니다 (0) | 2020.07.21 |
div 수직 정렬 중간 CSS (0) | 2020.07.21 |