본문 바로가기
프로그래밍 언어

산술 연산자

by do_ng 2022. 3. 20.

실수와 연산을 하면 나머지가 발생할 수 있을까?

float b = 10.0f % 3.0f 
float b = 10.f % 3  

실수는 나머지를 구하는 연산작업이 불가능하다.
Why? 10 나누기 3을 하게되면 몫이 3.3333..... 소수점아래 무한대로 반복되는데 어떻게 나머지를 구할 것인가?

실수의 데이터 타입 표기법

float a = 3.3f 
-> 실수의 소수점 뒤에 f를 붙이면 float 데이터로 간주한다. 
double a = 3.3 
-> 실수의 소수점 뒤에 f를 붙이지 않으면 double 데이터로 간주한다. 

Q1) double형 데이터와 float형 데이터를 더할때 발생되는 문제는 무엇일까?
float a = 3.3 + 3.3f 

산술 연산자 실생활 예시

국어, 영어, 수학 3과목의 평균 구하기

int score = 80 + 75 + 68; 
std::cout << score/3; --> 평균:74
std::cout << score/3.f; --> 평균:74.3333.... 

정수타입으로 나누기를 했을 때는 평균이 74가 나온다.
실제 평균값은 74.333... 인데 정수표현방식을 사용했으므로 0.333...이 잘려나간다.
원래의 의도가 소수점 이하를 버릴 생각이였다면 맞는 방식이지만, 소수점이하까지 출력해야되는 경우라면 실수형 표현방식으로 바꾸어서 계산을 해야된다.

평균을 정수 단위까지만 구할 것인가? 아니면 소수점 이하까지 최대한 정확하게 구할 것인가?
목적에 맞춰서 데이터 타입과 피연산자를 설정하는 것이 중요하다.
0.3의 차이지만 만약에 주식 배당률이나 이자같이 중요한 값을 구해야 되는 경우에서 소수점 이하를 버린다면 치명적인 결과를 초래할 것이다.

'프로그래밍 언어' 카테고리의 다른 글

논리 연산자  (0) 2022.03.22
증감 연산자  (0) 2022.03.21
실수 자료형  (0) 2022.03.20
자료형  (0) 2022.03.19
싱글스레드와 멀티스레드의 장단점  (0) 2022.03.03