반응형

자바스크립트에서 switch 와 if else if 만 잘써도 문서 깔끔해 질 수 있어요

 

javascript if else = 조건문

if 조건에 해당하는 경우 자바스크립트 코드 블록이 실행되도록.

if (new Date().getHours() > 21) {
 
  alert("잘자요!");  
 
}

위 코드처럼 if ( 조건 ) 이 참 true 면 { 내용 실행 }

지금 시간이 21시 보다 크면 alert("잘자요!")

 

그럼 21시 보다 작거나 같을 때는??

if 조건이 거짓 인 경우 else 코드 블록이 실행되도록.

if (new Date().getHours() > 21) {
  
  alert("잘자요!");  
  
}else{

  alert("힘내요!")
  
}

자 여기에 조건이 많이 지면 어떻게 될까요??

지금 시간 == 8시 { "일어나요" }

지금 시간 == 12시 { "점심시간" }

지금 시간 == 18시 { "퇴근시간" }

지금 시간 == 22시 { "잠잘시간" }

var time = new Date().getHours();
if (time == 8) {

  alert("일어나요");  
  
} else if (time == 12){

  alert("점심시간")
  
} else if (time == 18){

  alert("퇴근시간")
  
} else if (time == 22){

  alert("잠잘시간")
  
}
  • if를 사용하여 지정된 조건에 해당하면 코드 블록을 실행
  • else를 사용하여 if 같은 조건이 거짓 인 경우  else 코드 블록을 실행
  • 사용은 else if첫 번째 조건이 false 인 경우, 새로운 조건을 지정

 

if else if 단점은 조건을 다확인 한다는 거에요.. 

코드가 길어지면 길어질 수록 연산 해야 할게 많아 지는거지요~~ 

위와 같은 조건이 있다면~~

 

javascript switch = 선택문 사용하세요

다양한 조건 중 선택된 조건 실행

var time = new Date().getHours();
switch(time) {
  case 8:
    alert("일어나요");  
    break;
  case 12:
    alert("점심시간")
    break;
  case 12:
    alert("퇴근시간")
    break;
  case 22:
    alert("잠잘시간")
    break;
  default:
    // 알람없음
}
  • switch 식을 한 번 평가됩니다.
  • 식의 값이 각각의 경우의 값과 비교된다.
  • 일치가있는 경우, 코드의 관련 블록이 실행됩니다.

switch 문에 break 문의 역할은 선택 블록을 실행하다 break를 만나면 switch 문을 벗어납니다. 

만약 break 문이 없다면 다음 case를 블록을 실행하게 되는것이 지요

 

 

조건문과 선택문 상황에 맞게 사용하세요~~

 

 

 

 

 

반응형

'일상 > ' 카테고리의 다른 글

7세 남자아이 헤어스타일  (0) 2021.06.21
javascript 소수점 계산 오류? 소수점 계산 해결 방법  (0) 2020.02.10
블로그 이미지

2j-story

다양한 지식 공유 알림이 입니다

,
반응형

 

오랜만에 javascript 소수점을 계산하다 의문점이 생겨 이렇게 글을 남겨요~~

문제 : 0.1+0.2

정답 : 0.30000000000000004

크롬 console 창에 위와 같아 연산을 해보면 답이 우리가 알고 있는 답이랑 달라요~

 

왜 그럴까요?

 

먼저 JavaScript Numbers에 대해 알아보고 갈까요?

자바 스크립트 숫자는 항상 64 비트 부동 소수점입니다

다른 많은 프로그래밍 언어와는 달리, 자바 스크립트는 정수처럼, 짧은, 긴, 부동 소수점 등 번호의 다른 유형을 정의하지 않습니다

자바 스크립트 번호는 항상 국제 IEEE 754 표준에 따라 배정 밀도 부동 소수점 숫자로 저장됩니다.

수 (비율)이 비트에 저장된 64 비트의 저장 형식이 숫자 0 내지 51 비트 52 내지 62의 지수 비트 및 63에서 기호 

 

(기간 또는 지수 표기가 없는 번호) 정수는 15 자리의 정확도까지입니다.

위 이미지처럼 15 자리 수와 16자리 수위 값이 달라요....

 

 

 

 

소수점에 더하기에 문제를 해결하기 위해

1. 곱셈과 나눗셈

var x = 0.1+0.2x;  //결과 : 0.30000000000000004
var y = (0.1 * 10 + 0.2 * 10) / 10;  y;  //결과 : 0.3

 

 

 

2. Number.toFixed() : 인자로 넘긴 수만큼의 소수점 이하를 반올림하여 문자열 형태로 반환하는 메서드.

var x = 0.1+0.2x.toFixed(1);  //결과 : "0.3"

Number.toFixed() 메서드의 문자열 형태로 반환한다는 것을 잊으면 안돼요

그리고 소수점 자리 수를 알아야 한다는 거예요 

var x = 0.1+0.2x.toFixed();  //결과 : "0"

우리가 원하는 답이 아닐 수도 있어요~

 

결과만 필요할  Number.toFixed() 메서드를 사용해야 하지만 매번 소수점 자리 수를 찾는 건 좋은 방법이 아닐 수 있어요

예전에 계산해야 할 소수점을 []에 저장하고 

for문을 돌려서 소수점이 가장 많은 개수를 가져와서 Number.toFixed() () 안에 넣을 수 있도록 했어요~~

function decimalFits(arr){//소수점 자리수가 가장많은 수 return
  var decimalN = 0;
  for(var j=0; j<arr.length; j++ ){
    var n = arr[j];          
    if(!Number.isInteger(n)){ //소수
      var d = String(n).split('.')[1].length; //문자열 소수점 다음 개수        
      if(decimalN < d)decimalN = d;
    }
  }
  return decimalN;
}
var arr = [0.1, 0.12, 0.123]
decimalFits(arr); // 결과 : 3

Number.isInteger() - 정수인지 확인할 수 있는 메서드

 

 

 

3.  Math. round, ceil, floor ( 반올림, 올림, 내림 )

반올림

Math.round(0.1);  // 결과 : 0
Math.round(0.5);  // 결과 : 1

올림

Math.ceil(0.1);  // 결과 : 1
Math.ceil(0.5);  // 결과 : 1

내림

Math.floor(0.1);  // 결과 : 0
Math.floor(0.5);  // 결과 : 0

연산식을 만들 때 필요한 함수  Math.round, Math.ceil, Math.floor 

 

소수점 셋째 자리에서 반올림해서 둘째 자리까지 나타내려면

Math.round(0.125*100)/100;  //결과 : 0.13

위와 같이 식을 만들면 돼요~

Math.round((0.1+0.2)*100)/100;  // 결과 : 0.3

 

문제 : 0.1+0.2

정답 : 0.30000000000000004

 

정답이지만.. 우리가 원하는 결과 값을 만들기 위해 긴 글을 작성하게 되었네요

 

 

 

문의가 있다면 댓글을 

이 글이 좋았다면 공감 버튼을 눌러주세요 ^^

 

 

 

 

 

 

반응형
블로그 이미지

2j-story

다양한 지식 공유 알림이 입니다

,