*소수점 연산이 항상 정확하지 않음
ex) let x = 0.2 + 0.1;
document.getElementById("demo1").innerHTML = "0.2 + 0.1 = " + x;
-> 0.30000000000000004
그래서 it helps to multiply and divide:
let y = (0.2*10 + 0.1*10) / 10;
document.getElementById("demo2").innerHTML = "0.2 + 0.1 = " + y;
-> 0.3
*숫자 계산
let x = 10;
let y = 20;
let z = x + y;
-> 30 ( 숫자 계산 )
*문자 계산
let x = "10";
let y = "20";
let z = x + y;
-> 1020 ( 문자 그대로 출력 )
*숫자와 문자 계산
let x = 10;
let y = "20";
let z = x + y;
-> 1020 ( 숫자10 더하는게 없어서 그대로 나오고 문자20 출력 )
*숫자 계산에서 주로 하는 실수
var x = 10;
var y = 20;
document.getElementById("demo").innerHTML =
"The result is: " + x + y;
-> The result is: 1020
이유) 30이안나옴 왜냐하면 결과식에 + x + y 에 맨 앞에 + 때문에?
let x = 10;
let y = 20;
let z = "30";
let result = x + y + z;
document.getElementById("demo").innerHTML = result;
-> 3030 ( 숫자 x+y 계산되고, 문자 30 그대로 출력됨 )
*자바스크립트 문자열은 숫자 콘텐츠를 가질 수 있다.
let x = 100; // x is a number
let y = "100"; // y is a string
*JavaScript는 모든 숫자 연산에서 문자열을 숫자로 변환하려고 시도합니다.
let x = "100";
let y = "10";
let z = x / y;
-> 10 , 나눗셈. 곱하기. 빼기도 마찬가지
*NaN은 숫자가 합법적인 숫자가 아님을 나타내는 자바스크립트 예약어이다.
숫자가 아닌 문자열로 연산을 시도하면 NaN(Not a Number):
let x = 100 / "Apple";
-> NaN 이라고 뜸
그러나 문자열에 숫자 값이 포함되어 있는 경우 결과는 다음과 같습니다.
let x = 100 / "10";
-> 10 (왜냐하면 js는 모든 숫자 연산에서 문자열을 숫자로 변환하려고 시도하기 때문)
You can use the global JavaScript function isNaN() to find out if a value is a not a number:
let x = 100 / "Apple";
isNaN(x);
-> true
*수학연산에서 nan을 쓸 경우
let x = NaN;
let y = 5;
document.getElementById("demo").innerHTML = x + y;
-> NaN
let x = NaN;
document.getElementById("demo").innerHTML = typeof x;
-> number (typeof NaN 은 number 을 반환한다)
Infinity(또는 -Infinity)는 가능한 가장 큰 숫자를 계산할 때 JavaScript가 반환하는 값입니다.
let myNumber = 2;
// Execute until Infinity
while (myNumber != Infinity) {
myNumber = myNumber * myNumber;
}
->4
16
256
65536
4294967296
18446744073709552000
3.402823669209385e+38
1.157920892373162e+77
1.3407807929942597e+154
Infinity
*0으로 나눠도 인피니티
let x = 2 / 0;
let y = -2 / 0;
-> Infinity
-Infinity
*JavaScript는 숫자 상수가 0x 앞에 오는 경우 16진수로 해석합니다.
let x = 0xFF;
document.getElementById("demo").innerHTML = "0xFF = " + x;
-> 0xFF = 255
기본적으로 JavaScript는 숫자를 10진수로 표시합니다.
그러나 toString() 메소드를 사용하여 2부터 36까지의 숫자를 출력할 수 있습니다.
16진수는 16진법, 소수점은 10진법, 옥탈은 베이스 8,이진수는 기본 2
let myNumber = 32;
myNumber.toString(32);
myNumber.toString(16);
myNumber.toString(8);
myNumber.toString(2);
->Decimal 32
Hexadecimal 20
Octal 40
Binary 100000
*일반적으로 자바스크립트 숫자는 리터럴로부터 만들어진 원시적인 값이다.
그러나 숫자는 new 키워드를 가진 개체로 정의할 수도 있다.
let y = new Number(123);
// x is a number
let x = 123;
// y is a Number object
let y = new Number(123);
document.getElementById("demo").innerHTML = typeof x + "<br>" + typeof y;
->number
object
(x는 타입이 숫자라서 넘버가 나오고, y는 객체라서 오브젝트로 나옴, 타입이 뭔지 출력하게 함)
*(x==y)와 (x===y) 사이의 차이
== -> 값만 같으면 됌
=== -> 타입, 값 둘다 같아야 함
(x == y) true or false?
let x = new Number(500);
let y = new Number(500); -> true
(x === y) true or false?
let x = new Number(500);
let y = new Number(500); -> false
=================================================================
*toString() 메서드는 숫자를 문자열로 반환합니다.
모든 숫자 방법은 모든 종류의 숫자(literals, variables, 식)에 사용할 수 있다.
let x = 123;
x.toString();
(123).toString();
(100 + 23).toString();
-> 각각 123으로 출력됨
*toExponential()은 숫자를 반올림하고 지수 표기법을 사용하여 쓰는 문자열을 반환합니다.
파라미터는 소수점 뒤의 문자 수를 정의합니다.
let x = 9.656;
x.toExponential(2);
x.toExponential(4);
x.toExponential(6);
-> 9.66e+0
9.6560e+0
9.656000e+0
*toFixed()는 지정된 소수점 수로 쓰여진 문자열을 반환합니다.
let x = 9.656;
x.toFixed(0);
x.toFixed(2);
x.toFixed(4);
x.toFixed(6);
->10
9.66
9.6560
9.656000
*toPrecision()은 지정된 길이의 숫자로 작성된 문자열을 반환합니다.
let x = 9.656;
x.toPrecision();
x.toPrecision(2);
x.toPrecision(4);
x.toPrecision(6);
-> 9.656
9.7
9.656
9.65600
*valueOf()는 숫자로 숫자를 반환합니다.
let x = 123;
x.valueOf();
(123).valueOf();
(100 + 23).valueOf();
->123
123
123
JavaScript에서 숫자는 원시 값(typeof = number) 또는 개체(typeof = object)일 수 있습니다.
valueOf() 메소드는 Number 객체를 원시 값으로 변환하기 위해 JavaScript에서 내부적으로 사용됩니다.
당신의 코드에 그것을 사용할 이유가 없습니다.
=>모든 JavaScript 데이터 유형은 valueOf() 및 toString() 메서드를 가집니다.
*변수를 숫자로 변환하는 데 사용할 수 있는 자바스크립트 방법에는 3가지가 있다.
- The Number() method
- The parseInt() method
- The parseFloat() method
이러한 메소드는 숫자 메서드가 아니라 전역 JavaScript 메서드입니다.
*JavaScript 전역 메소드는 모든 JavaScript 데이터 유형에 사용할 수 있습니다.
숫자로 작업할 때 가장 관련성이 높은 방법은 다음과 같습니다.
Number() | 인수에서 변환된 숫자를 반환합니다. |
parseFloat() | 인수를 구문 분석하고 부동 소수점 숫자를 반환합니다. |
parseInt() | 인수를 구문 분석하고 정수를 반환합니다. |
*Number() 는 JavaScript 변수를 숫자로 변환하는 데 사용할 수 있습니다.
Number(true) + "<br>" +
Number(false) + "<br>" +
Number("10") + "<br>" +
Number(" 10") + "<br>" +
Number("10 ") + "<br>" +
Number(" 10 ") + "<br>" +
Number("10.33") + "<br>" +
Number("10,33") + "<br>" +
Number("10 33") + "<br>" +
Number("John");
->1
0
10
10
10
10
10.33
NaN
NaN
NaN
(숫자를 변환할 수 없는 경우 NaN이 반환됩니다.)
*Number()는 날짜를 숫자로 변환할 수도 있습니다.
Number(new Date("1970-01-01"))
->0
*parseInt()는 문자열을 구문 분석하고 정수를 반환합니다. 공백이 허용됩니다. 첫 번째 숫자만 반환됩니다.
parseInt("-10") + "<br>" +
parseInt("-10.33") + "<br>" +
parseInt("10") + "<br>" +
parseInt("10.33") + "<br>" +
parseInt("10 6") + "<br>" +
parseInt("10 years") + "<br>" +
parseInt("years 10");
-> -10
-10
10
10
10
10
NaN
(If the number cannot be converted, NaN (Not a Number) is returned.)
*parseFloat()는 문자열을 구문 분석하고 숫자를 반환합니다. 공백이 허용됩니다. 첫 번째 숫자만 반환됩니다.
parseFloat("10");
parseFloat("10.33");
parseFloat("10 20 30");
parseFloat("10 years");
parseFloat("years 10");
-> 10
10.33
10
10
NaN
(If the number cannot be converted, NaN (Not a Number) is returned.)
Number Properties
MAX_VALUE JavaScript에서 가능한 최대 수를 반환합니다.
MIN_VALUE JavaScript에서 가능한 최소 숫자를 반환합니다.
POSITIVE_INFINITY는 무한대를 나타냅니다(오버플로에 반환됨).
Negative_INFINITY 음의 무한대를 나타냅니다(오버플로에 반환됨).
NaN은 "Not-a-Number" 값을 나타냅니다.
*MAX_VALUE는 JavaScript에서 가능한 가장 큰 숫자를 반환합니다.
let x = Number.MAX_VALUE;
->1.7976931348623157e+308
*MIN_VALUE returns the lowest possible number in JavaScript.
let x = Number.MIN_VALUE;
->5e-324
let x = Number.POSITIVE_INFINITY;
->Infinity
*POSITIVE_INFINITY is returned on overflow:
let x = Number.NEGATIVE_INFINITY;
->-Infinity
*NEGATIVE_INFINITY is returned on overflow:
*NaN은 숫자가 합법적인 숫자가 아님을 나타내는 자바스크립트 예약어이다.
숫자가 아닌 문자열로 연산을 시도하면 NaN(Not a Number)
let x = 100 / "Apple";
-> NaN
*Number 속성은 Number라는 자바스크립트의 Number 객체 wrapper에 속합니다.
이러한 속성은 Number.MAX_VALUE.로만 액세스할 수 있습니다.
MyNumber 사용.여기서 myNumber는 변수, 식 또는 값인 MAX_VALUE는 정의되지 않은 값을 반환합니다.
let x = 6;
x.MAX_VALUE
-> undefined
'Frontend > Javascript' 카테고리의 다른 글
return false로 안넘어가고 submit되는 경우 (0) | 2022.03.25 |
---|---|
alert창 나타나게 하는법 (0) | 2022.03.24 |
javascript void(0) 의미 (0) | 2021.12.07 |
var, let, const 비교 (1) (0) | 2021.12.06 |
sort(function(a,b){return a-b}) 오름차순, 내림차순 (0) | 2021.12.06 |
댓글