2010-01-29 4 views
5

소수점 앞에 항상 "0"이 있도록 과학적 표기법으로 숫자를 출력해야합니다.출력 형식 지정

x = 134.87546의 경우 출력을 생성해야합니다. 0.134875E03 NOT 1.348755E02

누군가이 작업 방법을 알고 있습니까?

미리 감사드립니다. - Shiraz.

답변

0
int exponent = floor(log10(num)) + 1; 

그런 다음 십진수가없는 숫자 "E"를 누른 다음 지수를 인쇄하십시오.

+0

'log()'는 C 표준 라이브러리의 자연 로그입니다. 당신은'log10()'을 원한다. – Amber

+0

또한 'ceil (log10 (num))'은 입력이 '10'이면 '1'을, '10'이 연결되는 '0.'이 '0.10'이면 '10^1'이 곱해질 때 '1.0'은'10'과 같지 않습니다. 당신은 정말로 1을 더해 바닥을 원합니다. – Amber

+0

@Dav, 아, 고마워요. 나는 stdmath를 오랫동안 사용하지 않았기 때문에 나는 log10을 의미한다고 덧붙였다. 또한 log10에 대해 10의 지수가 정수인 경우를 고려하지 않았습니다. – strager

3
int exp = (int)log10(input)+1; 
double shifted = input/pow(10.0, exp); 
printf("%fE%d", shifted, exp); 
0

일반적인 출력 형식 라이브러리 인 Boost Format library을 사용하여 조사 할 수 있습니다.

+1

저는 fixed/scientific manipulators가 실제로 소수점 앞에 0을 갖도록 할 수 없다는 것을 확신합니다 - 그들은 10 진수 앞에 한 자리 (0이 아닌) 인 표준 표기법으로 설계되었습니다. – Amber

+0

@Dav Ooops ... 나는 조작자가 어떻게 행동했는지 생각했다. 내 대답에서 그것을 제거하고 (귀하의 의견을 썼습니다;) – Yukiko