>  기사  >  웹 프론트엔드  >  수학 네임스페이스 및 BigInt

수학 네임스페이스 및 BigInt

DDD
DDD원래의
2024-09-13 22:19:32543검색

Math Namespace & BigInt

Math.sqrt, 즉 sqrt는 Math 네임스페이스의 일부입니다.

// 제곱근을 구하는 2가지 방법
Math.sqrt(100); // 10, 방법 1
100*(1/2); // 10, 방법 2
8
*(1/3); // 2, 3차근에도 작동합니다

Math.max() & Math.min():

Math.max(23,54,12,6,32,98,87,34,11); // 98
// 유형 강제도 수행됩니다
Math.min(23,54,12,'6',32,98,87,34,11); // 6
// 파싱을 하지 않습니다
Math.min(23,54,12,'6px',32,98,87,34,11); // NaN

Math 객체에 내장된 상수:

Math.PI * (Number.parseFloat('10px')**(2)); // 지역 가져오기

흑백 1~6을 생성합니다.

Math.trunc(Math.random() * 6) 1;

상하한선 없이 무작위를 생성합니다.

const randomInt = (최소, 최대) => Math.floor(Math.random() * (최대-최소)) 1분;
무작위Int(10,20);

// Math.method()는 모두 강제를 입력합니다.
Math.trunc(25.4); // 25
Math.round(25.4); // 25
Math.floor(25.4); // 25
Math.ceil(25.4); // 26

Math.floor는 음수에 더 나은 선택입니다.

Math.trunc(-25.4); // -25
Math.floor(-25.4); // -26

// 소수 반올림: .toFixed는 숫자가 아닌 문자열을 반환합니다
(2.5).toFixed(0); // '3'
(2.5).toFixed(3); // '2.500'
(2.345).toFixed(2); // '2.35'

// 단항 기호를 추가하여 아니오로 변환합니다.
(2.345).toFixed(2); // 2.35

// Number는 기본 요소이므로 메서드가 없습니다. 따라서 뒤에서 JS는 박싱을 수행합니다. 즉, 기본 요소를 객체 없음으로 변환하고 작업을 수행한 다음 작업이 완료되면 다시 기본 요소로 변환합니다.

모듈식 또는 나머지 연산자:

5% 2; // 1

8% 3; // 2
8/3; // 2.6666666666666665

//홀수 또는 짝수
const isEven = n => n%2 === 0;
isEven(20);
isEven(21);
isEven(22);

사용 사례: 모든 홀수 행, 짝수 행, n번째 등의 작업에 사용됩니다.

숫자 구분 기호: [ES2021]

매우 큰 숫자를 나타내는 데 사용됩니다
숫자 사이에 들어갈 수 있는 밑줄입니다. 엔진은 이러한 밑줄을 무시하므로 개발자의 혼란이 줄어듭니다.
전. const 직경 = 287_460_000_000;
지름; // 287460000000

정가 = 342_25;
가격; // 34225

const fee1 = 1_500;
const fee2 = 15_00;
수수료1 === 수수료2; //참

밑줄은 숫자 사이에만 넣을 수 있습니다.
소수점 옆에 위치할 수 없습니다.
또한 번호의 시작이나 끝에 위치할 수 없습니다.

const PI = 3.14_15;
PI; // 3.1415

모두 숫자 구분 기호의 잘못된 예입니다.

const PI = 3.1415; //처음에 들어갈 수 없습니다.
const PI = 3.1415
; // 마지막에 넣을 수 없습니다.
const PI = 3_.1415; // 소수점 옆에 위치할 수 없습니다.
const PI = 3.1415; // 소수점 옆에 위치할 수 없습니다.
const PI = 3.
_1415; // 2개 연속으로 배치할 수 없습니다.

문자열을 숫자로 변환:

숫자('2500'); // 2500
번호('25_00'); // NaN , 따라서 변수에 숫자를 직접 할당할 때만 사용할 수 있습니다. 따라서 문자열에 아니요가 저장되어 있거나 API에서 아니요를 얻는 경우 오류를 방지하려면 '_' 숫자 구분 기호를 사용하지 마세요.
parseInt도 마찬가지입니다. 즉, _ 이후의 모든 항목은 아래와 같이 삭제됩니다.
parsInt('25_00'); // 25

BigInt

ES2020에 도입된 특수 유형의 정수
숫자는 내부적으로 64비트, 즉 64개의 1 또는 0으로 표시되어 모든 숫자를 나타냅니다. 53개만 숫자를 저장하는 데 사용되고 나머지는 소수점 위치와 부호를 저장하는 데 사용됩니다. 따라서 숫자의 크기에는 제한이 있습니다((2*53) - 1). 이는 JS가 안전하게 나타낼 수 있는 가장 큰 아니오입니다. 저장하는 동안 바이너리 형식으로 작업하기 때문에 밑수는 2입니다.
2
*53 - 1; // 9007199254740991
번호.MAX_SAFE_INTEGER; // 9007199254740991

이보다 큰 것은 안전하지 않습니다. 즉, 정확하게 표현할 수 없습니다. 마지막 숫자에 표시된 것처럼 이보다 큰 숫자의 경우 정밀도가 손실됩니다. 때로는 작동할 수도 있고 때로는 작동하지 않을 수도 있습니다.
번호.MAX_SAFE_INTEGER 1; // 9007199254740992
번호.MAX_SAFE_INTEGER 2; // 9007199254740992
번호.MAX_SAFE_INTEGER 3; // 9007199254740994
번호.MAX_SAFE_INTEGER 4; // 9007199254740996

이보다 큰 API에서 더 큰 no를 받으면 JS가 이를 처리할 수 없습니다. 따라서 위의 문제를 해결하기 위해 ES2020에서는 BigInt라는 새로운 기본 데이터 유형이 도입되었습니다. 이는 우리가 원하는 만큼 큰 정수를 저장할 수 있습니다.

no 끝에 'n'을 추가하여 BigInt로 만듭니다. 예
const 숫자 = 283891738917391283734234324223122313243249821n;
숫자; // 283891738917391283734234324223122313243249821n

BigInt는 이렇게 큰 숫자를 표시하는 JS 방식입니다.
BigInt 번호를 생성하기 위해 생성자 Fn을 사용하는 또 다른 방법입니다.
const x = BigInt(283891738917391283734234324223122313243249821);
엑스; // 283891738917391288062871194223849945790676992n

연산: 모든 산술 연산자는 BigInt와 동일하게 작동합니다.
const x = 100n 100n;
엑스; // 200n

const x = 10n * 10n;
엑스; // 100n

BigInt 숫자와 일반 숫자를 혼합하지 마세요.

const x = 100n;
const y = 10;
z = x*y; // 오류

작동시키려면 BigInt 생성자 Fn을 사용하세요.
z = x * BigInt(y);
지; // 1000n

비교 연산자와 단항 연산자는 예외입니다.

20n > 19; //참
20n === 20; // false, === JS가 유형 강제를 수행하는 것을 방지합니다. LHS와 RHS 모두 기본 유형이 다르므로 결과는 'false'입니다.

20n 유형; // 'bigint'
유형 20; // '숫자'

20n == 20; // true, JS는 BigInt를 일반 숫자로 변환하여 유형이 아닌 값만 비교하도록 강제 유형을 지정합니다.
이것도 마찬가지입니다: 20n == '20'; //참

예외:

연산자를 사용해도 BigInt 숫자가 문자열로 변환되지 않습니다.
const 숫자 = 248923874328974239473829n
"num이 엄청납니다. 즉, " num; // '숫자는 엄청납니다. 즉, 248923874328974239473829'

참고:
Math.sqrt는 BigInt와 작동하지 않습니다.
BigInt를 나누는 동안 소수 부분을 버립니다.
10/3; // 3.3333333333333335
10n / 3n; // 3n
12n / 3n; //4n

이 새로운 기본 유형은 JS 언어에 몇 가지 새로운 기능을 추가하여 엄청난 숫자로 작동하도록 합니다.

위 내용은 수학 네임스페이스 및 BigInt의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.