2016-10-07 4 views
4

내 프로그램에서 숫자를 위아래로 반올림 할 수있게하려고합니다. 수 3.6 경우숫자 위아래 반올림 C++

는 예를 들어, 내 프로그램은 4이며 숫자가 3.4 경우, 그것은 내가 ceil를 사용하여 시도 3.

아래로 반올림됩니다 가장 가까운 수를 모아 가정한다 라이브러리를 사용하여 평균 3 개의 항목을 가져옵니다.

results = ceil((marks1 + marks2 + marks3)/3)

그러나, ceil에만 번호를 반올림하지만 수를 롤업하지 않습니다.

1 알고리즘은 내가

var roundedVal = Math.round(origVal*20)/20;

우연히하지만 난 여전히 몇 가지 문제에 대한 공식을 알 수있다.

+2

위아래로 반올림하지 않았습니다. 당신은 그냥 반올림합니다. –

+5

WTF는'Math.round()'입니까? C++ 또는 Java입니까? –

+2

"그러나 'ceil'은 숫자를 반올림합니다 ..."물론, ceil은 반올림 만합니다. –

답변

11
std::ceil 

라운드 행동이 당신이

숫자 경우와 사용 사례를 적어주세요 기대 수행 이것은 당신에게 필요한 것을 제공하지 않습니다!

+2

@Teo Chuen Wei Bryan (ceil (1 + 3 + 6)/3)은 ceil이어야합니다 ((1 + 3 + 6) /3.0) – brettmichaelgreen

4

당신이 필요로하는 기능은 round이라고 믿고 있습니다.

ceil 라운드 업, btw. 즉, 가장 가까운 가장 큰 정수입니다. floor는 내립니다.

std::floor 

라운드 가장 가까운 정수

std::round 

에 이르기까지 가장 가까운 정수까지

+0

나는 그들이 같은 방식으로 일했다고 믿는다. 나는 전에'round'와'ceil' 둘 다 시도했습니다. –

+0

http://en.cppreference.com/w/cpp/numeric/math/round "arg (부동 소수점 형식)에 가장 가까운 정수 값을 계산하고 현재 반올림 모드에 관계없이 중간에서 반올림하는 경우를 0에서 반올림합니다 . " 트릭을 수행해야하는 '바닥'이 있습니다. – xuanluong

+0

@TeoChuenWeiBryan 당신은 두 가지 예 모두에서 그것을 시도 했습니까? –

3

당신은 C 또는 C++ 라운드에 기능이 필요하지 않습니다. 당신은 간단한 트릭을 사용할 수 있습니다. 0.5를 더한 다음 정수로 변환하십시오. 그것은 어쨌든 모든 라운드가 가능합니다.

double d = 3.1415; 
double d2 = 4.7; 
int i1 = (int)(d + 0.5); 
int i2 = (int(d2 + 0.5); 

i1은 3이고 i2는 5입니다. 직접 확인할 수 있습니다.