2013-06-20 2 views
1

Fortran 77 프로그램의 텍스트 파일에 (2000 만 개가 넘는) 부동 소수점 값을 많이 출력해야합니다. 출력 파일을 가능한 작게 유지하고 싶습니다. 따라서 저는 바이너리에 의지하지 않고 컴팩트하게 플로트를 출력하고 싶습니다.Fortran 77 : 가변 폭의 출력 부동 소수점

필자가 필요로하는 정밀도 (보통 소수점 오른쪽 두 자리)를 알고 있으므로 C에서 나는 printf("%.2f %.2f", val1, val2);을 사용할 것입니다. Fortran 77에서 이와 비슷한 것이 가능합니까? 내가 발견 한 것은 필드 너비를 명시 적으로 설정해야한다는 것입니다 (예 : format (f8.2,x,f8.2)). 출력 빈도의 범위를 미리 알지 못하면 많은 공간이 낭비됩니다.

Fortran 77에서 가능하지 않은 경우, 새로운 포트란 표준이이를 수행하는 방법을 제공합니까?

답변

3

포트란 2008 표준은 f0.2과 같은 편집 설명자가 허용되며, 그 결과 출력은 숫자의 전체 부분과 소수점 이하 두 자리 숫자를 쓰는 가능한 최소 필드 폭입니다. 나는 Fortran 90 이후의 언어 표준의 일부 였을 것으로 생각한다.

+1

[Fortran 95] (http://j3-fortran.org/doc/standing/archive/007/97-007r2/pdf/97-007r2.pdf) (10.5.1.1 절은 I 디스크립터 , 조금 더 F) : 두 경우 모두 "* w가 0 일 때, 프로세서는 필드 너비를 선택합니다. *". [Fortran 2003] (http://www.j3-fortran.org/doc/year/04/04-007.pdf) 섹션 1.6.1.1에서와 같은 문구. 확인 [여기] (http://fortranwiki.org/fortran/show/Edit+descriptors). –

+0

정수와 함께 사용할 수도 있습니다. 'i0' – DJSquared

0

숫자가있는 경우 INT (LOG10 (X)) + 1은 정수 부분의 크기 (정수 부분의 자릿수)입니다. 따라서 인쇄하려는 각 값에 대해 사용자 정의 FORMAT 레이블을 만들어야합니다.

매우 우아하지는 않지만 원하는대로 달성하는 데 도움이 될 것이라고 생각합니다.

0

나는 이것이 우울하고 도움이되지 않지만 내 말을들을 수도 있다는 것을 알고있다. 당신이 나쁜 과학을하고있는 것 같습니다. 계측기가 1000.00에서 0.01까지의 수치를 뱉어 내면 계측기는 아마도 백분의 일 부분에 대해서만 정확합니다. 따라서 9894.36은 9900 (소수점 아님)으로 반올림되어야합니다. 다른 모든 숫자는 중요하지 않습니다. 관련성이 높고 도움이되는 이유는 무엇입니까? 9894.36을 저장하는 경우 저장 공간을 낭비하기 때문입니다. 따라서 과학적 표기법으로 출력하는 g 편집 설명자를 사용하는 것이 답입니다. 그러면 모든 숫자가 같은 공간을 차지하게됩니다.

관련 문제