처음에 n = 10이라 정의하고 m = 100이라 정의를 한 다음에
간단한 if문을 만들어서 pow(n, 2) (n의 제곱) 과 m이 같은 수인지 확인하였다.
하지만 알다시피 pow(a, b)의 타입은 double이다.
그래서 (int) pow(n, 2)를 해서 비교를 했더니 ...??? 99가 되는것이었다.
찾아보니 수가 0보다 크면 0.5를 더하고 0보다 작으면 0.5를 빼라고..
그래서 위에 ROUND_2_INT(f) 라는 함수를 정의 해줬다.
(물론 제일 쉬운 방법은 round() 함수를 쓰는것이다 ㅋㅋㅋ)
#include <iostream>
#include <string>
#include <cmath>
#include <typeinfo>
#define ROUND_2_INT(f) ((int) (f >= 0.0 ? (f+0.5):(f-0.5)))
//when using typecast, add 0.5 if the integer is greater than 0
//subtract 0.5 when the integer is less than 0
using namespace std;
int main()
{
int n = 10;
int m = 100;
cout << pow(n, 2) << endl; //100
cout << typeid(pow(n, 2)).name() << endl; //d=double
cout << (int) pow(n, 2) << endl; //99
cout << ROUND_2_INT(pow(n, 2)) << endl; //100
if (ROUND_2_INT(pow(n, 2)) == m) {
cout << "n square is 100\n";
}
else {
cout << "n square is not equal to 100\n";
}
return 0;
}
cin, getline skipping input (0) | 2020.09.03 |
---|---|
비주얼 스튜디오에서 MinGW를 이용해 c++파일 컴파일하기 (Run c++ file in Visual Studio Code using MinGW) (0) | 2020.08.28 |
Int to string, string to char* in c++ (0) | 2020.07.19 |
Stringstream: cuts the string into parts by space (0) | 2020.07.19 |
Ternary if statement (0) | 2020.07.19 |
댓글 영역