프로그래밍 언어
[Java] BigDecimal
개념BigDecimal은 Java 언어에서 숫자를 정밀하게 저장하고 표현할 수 있는 유일한 방법이다.소수점을 저장할 수 있는 가장 크기가 큰 타입인 double은 소수점의 정밀도에 있어 한계가 있어 값이 유실될 수 있다.Java 언어에서 돈과 소수점을 다룬다면 BigDecimal은 선택이 아니라 필수이다.BigDecimal의 유일한 단점은 느린 속도와 기본 타입보다 조금 불편한 사용법 뿐이다.double 문제점소수점 이하의 수를 다룰 때 double 타입은 사칙연산시 아래와 같이 우리가 기대한 값과 다른 값을 출력한다. 이유는 double 타입이 내부적으로 수를 저장할 때 이진수의 근사치를 저장하기 때문이다. 저장된 수를 다시 십진수로 표현하면서 아래와 같은 문제가 발생한다. 아래 설명할 BigDecim..
[Java] long float의 값 뒤에 L, F을 붙여야 하는 이유
long 타입으로 변수를 선언하고 값을 초기화 할 때에는 반드시 리터럴 뒤에 소문자나 대문자 L을 붙여주어야 한다. 아래 에러가 뜨는 이유는 2147483648 이라는 값은 변수 lo에 저장하기 전에 임시로 메모리에 저장되는데, 이때 사용하는 기본 데이터 타입이 int 이고 허용 범위를 초과하는 리터럴은 임시로 저장하는 과정에서 에러가 나는 것이다. 이것을 해결하려면 아래와 같이 리터럴 끝에 l을 붙여주면 된다. float도 비슷한 맥락의 이유로 에러가 난다. float의 데이터 값을 변수에 저장하기 전에 이 값을 메모리에 임시로 저장하는데, 이때 저장되는 타입이 double이다. double은 8 바이트의 데이터 타입이고, float는 4 바이트다. 1199.80이라는 수는 8바이트의 double 타입..
[Java] 자료형 정리
Data Type자바에는 기본형 (Primitive Type)과 참조형 (Reference Type)이 있다.Java Data Type ㄴ Primitive Type ㄴ Boolean Type(boolean) ㄴ Numeric Type ㄴ Integral Type ㄴ Integer Type(short, int, long) ㄴ Floating Point Type(float, double) ㄴ Character Type(char)ㄴ Reference Type ㄴ Class Type ㄴ Interface Type ㄴ Array Type ㄴ Enum Type ㄴ etc.Primitive Type기본형은 다음과 ..
[Python] capitalize(), title() 함수 비교
문자열 s1 = 'abc'가 있을 때 각 함수를 적용한 결과는 다음과 같다. upper() 함수는 모든 문자열을 대문자로 바꾸고, capitalize()와 title()은 문자열의 맨 앞글자만 대문자로 바꾸지만 미묘한 차이가 있다.capitalize() 함수는 문자열 s2의 맨 앞글자인 a만을 대문자 A로 바꾼 반면, title() 함수는 공백을 기준으로 문자열을 분리한듯 a와 d를 각각 대문자 A,D로 바꿨다. 이 경우를 통해 capitalize()와 title()은 다른 결과를 만드는 것을 알 수 있다. 다음 예시에선 s3은 문자열 사이에 숫자가 있는 경우, s4는 문자열 사이에 특수문자가 있는 경우이고 결과는 동일하다. s5에는 숫자, 공백이 포함되어 있다. s5에 각 함수를 적용시켜 보아도 결과..
[Python] 문자열 함수 모음
더하기 연산 (+ 연산자) : 문자열 결합+ 연산자 (더하기 연산자) 를 사용하면, 문자열을 옆으로 붙이게 된다. 즉, 문자열을 결합시킨다.두개의 문자열을 결합시키는 것도 되고, 여러개의 문자열을 결합시킬 수도 있다.더하기 연산자를 이용해서 문자열을 붙일 때, 공백을 포함시켜서 결합시키려면, " " 공백 문자열을 중간에 넣어주면 된다.대소문자 처리하는 upper(), lower(), title() 함수문자열을 대문자 로 바꿀 수 있는 upper()문자열을 소문자 로 바꿀 수 있는 lower() 문자열을 단어 앞만 대문자로 바꿀 수 있는 title() 함수도 있다.문자열을 쪼갤 수 있는 split() 함수 - 쪼갠 결과는 list로 반환아래 예에서, 문자열을 공백( " " ) 으로 쪼갤수 있다. 즉, 문자..
[Python] 딕셔너리 키, 값 쌍 얻기 - items()
>>> car = {"name" : "BMW", "price" : "7000"} >>> car.items() dict_items([('name', 'BMW'), ('price', '7000')]) items 함수를 사용하면 딕셔너리의 값을 반복할 때 키와 값을 접근하기가 매우 유용해진다>>> car = {"name" : "BMW", "price" : "7000"} >>> for key, val in car.items():... print("key : {} value : {}".format(key,val)) key : name value : BMW key : price value : 7000 출처
[Python] Dictionary - 딕셔너리
정의딕셔너리는 순서가 없는 리스트로 원소들의 인덱싱은 키(key)에 의해서 이루어진다. 원리는 실제 딕셔너리 즉, 사전과 동일하다. 사전에는 단어에 의해서 상응하는 정의들이 연결되어 있다. 파이썬의 딕셔너리들은 기본적으로 변수가 자연적인 순서가 없는 경우, 유용한 변수이다. 딕셔너리는 콤마(,)를 사용해서 키와 값의 쌍으로 정의된다. 이러한 키와 값 쌍은 중괄호 {}에 의해서 둘러싸게 되면 딕셔너리로 정의된다.변수 만들어보기빈 딕셔너리는 아래와 같이 중괄호 {} 를 사용해서 만들 수 있고, .type() 함수 해당 변수의 타입을 확인하면 dict 라고 나타난다.dic = {}type(dic)또는dic = dict()// dict 딕셔너리에 키와 값을 정의할 땐 키 : 값 (키와 값 사이에 콜론 : 사용)..
[SQL] CASE WHEN 조건 여러개 (다중 조건, 다중 칼럼)
CASE WHEN 조건 여러개 부여 (다중 조건)CASE 표현식에서 여러개의 조건을 부여하기 위해서는 WHEN ~ THEN 구문을 반복해서 사용하면 된다.WHEN~THEN 구문을 처음부터 순차적으로 값을 비교하여 일치하는 조건이 있으면 THEN 이후 값을 반환 후 더 이상 값을 비교하지 않고 종료한다.. 일치하는 조건이 없을 경우 NULL을 반환한다.SELECT ename , job , CASE WHEN job = 'ANALYST' THEN 'CASE 1' WHEN job = 'MANAGER' THEN 'CASE 2' WHEN job = 'SALESMAN' THEN 'CASE 3' END AS case_result FROM emp WH..
[SQL] CASE WHEN 표현식 사용법 (DECODE, IF)
기본 사용법if문 방식비교 연산자 (>,), NULL 연산자 (IS NULL, IS NOT NULL)을 사용하여 조건을 부여할 수 있으며, 논리 연산자 (AND, OR)를 사용하여 여러 개의조건을 부여할 수 있다.ELSE 부분은 생략이 가능하며 생략할 경우 조건에 맞지 않으면 NULL을 반환한다.SELECT employee_id , first_name , job_id , CASE WHEN job_id = 13 THEN 'CLERK' WHEN job_id = 14 THEN 'MANAGER' ELSE 'N/A' END AS [job_title] FROM employees WHERe department_id IN (1, 3) switch..
[SQL] 별칭 (Alias) 활용하기
예약어는 AS 1. 칼럼 (column)에 별칭 사용하기-- mem_id, addr 두 가지 칼럼(열)의 이름 바꾸는 방법(별칭)SELECT mem_id AS "아이디", addr AS "주소" FROM member;-- 결과: mem_id은 아이디로 addr은 주소로 칼럼의 이름이 바뀌게 된다. 2. 테이블 (table)에 별칭 사용하기-- member라는 테이블 이름바꾸기(별칭)SELECT * FROM member as "개인정보";-- 결과: member 테이블의 이름이 개인정보로 바뀌게 된다. 기억해야 하는 점) 1. 별칭을 지정해줄 때 띄어쓰기가 들어간다면, 큰 따옴표 (")로 묶어주기 debut_date 칼럼(열)의 이름을 "데뷔 일자"로 바꾸기(별칭)잘못된 예시SELECT debut_dat..