2014-10-15 1 views
0

이 문제를 해결하는 방법을 이해하는 데 도움이 필요합니다.매우 큰 float 값을 2 자리로 줄이십시오. C++

-27.8738e007

는 I 2 자리 (-27.87)으로 절단 할 필요가 있지만, I :

I는, 예를 들면, 그 값이 부동 소수점 수 (이러한 동적 번호, 정적 없음)이 성공하지 못해.

나는 다른 형태를 시도했지만, 아무것도 수의 그 "E"에 대한 작동합니다 ... 예를 들어

:

float number = -27.8738e007; 

int decimals = 2; 
number = (roundf (number * pow (10, decimals))/pow (10, decimals)); 

이 -2.787383 + 008 반환 내가 얻을 필요 - 사전에 27.87

감사

인사말

+1

http://en.wikipedia.org/wiki/Scientific_notation를 참조하십시오. 부동 소수점 표현은 (거의 항상) 바이너리입니다. '1.23 '과 같은 숫자는 정확히 표현할 수 없습니다. 출력을 반올림하는 것은 의미가 있지만 내부적으로 반올림하면 정보가 손실됩니다. –

답변

3

가 리터를 보이는 과학 표기법이 어떻게 작동하는지 익숙하지 않은 것 같습니다.

-27.8738e007는 -278738000거나 -2.787380e + 08

잘림 또는 반올림은 "N"자리는 일반적 소수점 숫자의 소정 숫자들을 반올림을 의미한다. 이것이 게시 한 코드가 성취하려는 것입니다.

물론 소수점 2 자리로 반올림 한 -278738000은 여전히 ​​같은 숫자이며, 이는 현재 얻고있는 답변입니다.

-27.87380e + 07 2.787380e + 08

그것은 같은 수의입니다.

는 거의 의미가 없다 * 소수 * 장소의 지정된 번호로 부동 소수점 숫자를 반올림

+0

+1 "Location : basement" –

+0

사실입니다. 내 연구실/workarea/server room이 지하실에 있습니다. 이것은 바로 지금 내가있는 곳입니다. –

+0

lol 그것은 최고입니다. –

관련 문제