숫자로 마술을 하는 방법
15928 단어 tutorialwebdevjavascriptnode
Number
유형은 컴파일된 언어에서 double
또는 float64
로 호출되었을 것입니다. 따라서 숫자에는 몇 가지 제한이 있습니다.const maxInt = Number.MAX_SAFE_INTEGER // 9007199254740991
const minInt = Number.MIN_SAFE_INTEGER // -9007199254740991
minInt === -maxInt // true
const maxDouble = Number.MAX_VALUE // 1.7976931348623157e+308
const minDouble = Number.MIN_VALUE // -1.7976931348623157e+308
최소값과 최대값이 이상하게 긴 숫자가 보이시나요? 이것이 JavaScript 숫자를 나타내는 첫 번째 마법 같은 방법입니다. 밑수와 지수를 사용하는 것입니다(일명
beN
):const minusTwo = -2e0 // -2
const one75 = 175e-2 // 1.75
실제로 기본 번호를 지정한 다음
e
를 쓰고 점을 이동할 위치를 지정합니다. 마지막 숫자가 양수이면 0을 추가하고 음수이면 점을 왼쪽으로 이동합니다.const zero = 0e0 // 0; move dot from 0.0 zero times
const zero5 = 5e-1 // 0.5; move dot from 5.0 one time left
const fifty = 5e1 // 50; move dot from 5.0 one time right
const alsoFifty = 5e+1 // 50
const minusFifty = -5e+1 //-50; move dot from -5.0 one time right
const seventeen5 = 1.75e1 // 17.5; move dot from 1.75 one time right
그러나 이 표현은 읽기가 약간 어려울 수 있으므로 밑줄이 있는 오래된 일반 소수를 구분 기호로 사용할 수도 있습니다.
const million = 1_000_000; //1000000
const fiveK = 5_000 // 5000
const justLoveUnderscores = 1_2_3.3_2_1 //123.321
const oops = 1__0 // Error: Only one underscore is allowed as numeric separator
const nope = 0_1 // Error: Numeric separator can not be used after leading 0
대신 이진수를 처리하시겠습니까? 걱정하지 마세요. 다음과 같이 작성할 수 있습니다.
const five = 0b101 // 5
const alsoFive = 0B101 // 5; `b` is case tolerant
const max8bit = 0b1111_1111 // 255; You can use separators in any number :-)
const lessFive = -0b0101 // -5
물론
hexadecimal
숫자도 무기고에 있어야 합니다.const max8bit = 0xff // 255
const hexNum = -0xabc // -2748
const max32bit = 0xffff_ffff // 4294967295; can use separators
그리고 ECMA Script 2015가 도입되었습니다
octals
.const maxBit = 0o7 // 7
const eight = 0o10 // 8
const funnyZero = 0O0 // 0
그런 일이 발생하고 64비트로 정수를 짜낼 수 없는 경우
BigInt
를 추가하여 정수를 n
로 변환할 수 있습니다.const maxDouble = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff // Infinity
const biggerThanMaxDouble = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn // 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137215n
const bigTen = 10n // 10n;
const bigLess50 = -50n // -50n
그리고 JavaScript에는 몇 가지 진정한 마법의 숫자가 있습니다.
Infinity === Number.POSITIVE_INFINITY // true
-Infinity === Number.NEGATIVE_INFINITY // true
const smallestFraction = Number.EPSILON // 2.2204460492503130808472633361816e-16
smallestFraction === Math.pow(2, -52) // true
모든 사람이 이상한 사촌을 갖고 있기 때문에 JavaScript 숫자에는 문자 그대로 숫자가 아닌 특별한 숫자가 있습니다.
NaN
값은 특별한 값이며, 이 값을 사용하는 모든 단일 작업은 비교를 포함하여 NaN
가 됩니다.NaN === Number.NaN // false !!
Number.isNaN(NaN) // true
NaN + 1 // NaN
NaN * 15 // NaN
NaN / NaN // NaN
1 * NaN // NaN
NaN
를 만드는 가장 편리한 방법은 실패한 유형 변환을 사용하는 것입니다.parseInt('abc') // NaN
parseInt({}) // NaN
parseFloat('1.1.1') // NaN
'abc' * 1 // NaN
new Number('abc') // Number {NaN}
Math.abs('abc')
그러나 극단적인 경우를 처리하는 데 도움이 되는 내장 함수가 있으며
NaN
다음과 같습니다.Number.isNaN(123) // false
Number.isNaN('abc') // true
Number.isNaN(NaN) // true
Number.isFinite(123) // true
Number.isFinite(Infinity) // false
Number.isFinite(NaN) // false
Number.isInteger(123) // true
Number.isInteger(9007199254740992) // true !!
Number.isInteger(12.3) // false
Number.isInteger(Infinity) // false
Number.isInteger(NaN) // false
Number.isSafeInteger(123) // true
Number.isSafeInteger(9007199254740992) // false
Number.isSafeInteger(12.3) // false
Number.isSafeInteger(Infinity) // false
Number.isSafeInteger(NaN) // false
// BigInts are not considered Integers:
Number.isInteger(1n) // false
Number.isSafeInteger(1n) // false
// But it is a number:
Number.isNaN(1n) // false
더 갈증? MDN Lexical grammar 기사를 확인하십시오.
읽어 주셔서 감사합니다! 주저하지 말고 의견에 제안 사항과 전반적인 피드백을 공유하십시오.
Reference
이 문제에 관하여(숫자로 마술을 하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/valeriavg/how-to-do-magic-with-numbers-p6d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)