Register to reply 
Fortran: Data file problem 
Share this thread: 
#1
Sep2011, 06:58 AM

P: 4

Hello guys. I want to save the numbers between 0 and 1 with 0.01 increasement to a dat file. I wrote a code for this using Fortran however, after a point I get 0.314999 instead of 0.315000. Can you help me to solve my problem?
<code> REAL, DIMENSION(:), ALLOCATABLE :: Y REAL STEP, JEND, PX, GR, RE, RATIO INTEGER N, I, J JEND = 1.00 STEP = 1E3 N = JEND/STEP+1 RE=1 GR=1 RATIO=GR/RE PX=12.00 ALLOCATE (Y(N)) Y(1) = 0.0 OPEN(UNIT=8, FILE='HEATLINE.DAT', STATUS='OLD', FORM='FORMATTED') DO I = 2, N Y(I) = Y(I1)+STEP END DO PRINT *, 'N IS:' , N PRINT *, 'I IS:',I 53 format('VARIABLES = "Y"') WRITE(8,53) do i=1,n write(8,*) Y(I) end do CLOSE(8) END </code> 


#2
Sep2011, 09:15 AM

Emeritus
Sci Advisor
HW Helper
Thanks
PF Gold
P: 6,557

If you want to increment Y by 0.01 each time, why is STEP = 1E3?



#3
Sep2011, 09:20 AM

P: 100

i.e: if RE is a real and you want to declare it try RE=(1.0) instead of RE=1 ( 1 is an integer so may affect the operation ) Use real numbers when dealing with real numbers, I can humbly suggest. Good Luck ! 


#4
Sep2011, 11:11 AM

P: 100

Fortran: Data file problem



#5
Sep2011, 02:42 PM

Engineering
Sci Advisor
HW Helper
Thanks
P: 7,177

I assume you already know that floating point values stored in real variables are almost never exact. If you set STEP = 1E3, the value will not be exactly 0.001, though it should be accurate to about 6 or 7 significant figures.
The problem with your code is that you are adding STEP to itself a very large number of times, so these small errors accumulate. If you add STEP to itself 10 times, instead of 6 or 7 signifincat digits of accuracy you will only have about 5 or 6 digits. If you add it to itself 100 times, the accuracy reduces to 4 or 5 digits. For 1000 times, 3 or 4 digits, etc. The best way to avoid this problem is to calculate each value of Y independently of the others. Instead of



#6
Sep2011, 02:49 PM

Engineering
Sci Advisor
HW Helper
Thanks
P: 7,177




Register to reply 
Related Discussions  
Fortran: Read data from a line in a file  Programming & Computer Science  1  
Fortran 90, problem with reading a file  Programming & Computer Science  9  
Using a batch file to create NAMELIST input file for FORTRAN  Programming & Computer Science  0  
Fortran locate symbol in data file  Programming & Computer Science  1  
Find peak in the historgram data file...  FORTRAN!  Programming & Computer Science  1 