calculation in double precision

calculation in double precision

Hello,

When I make some calculation in double precision using an integer, I don't receive a good result.

For example, I made a simple program to write 0.10000000, 0.20000000, ...2.000000000 :

program do

implicit none

real(8) step, allo
integer i

step=0.1

do i=1,nint(2/step)
allo=real(i,8)*step
write(*,*) allo
end do

end program

But I receive

0.100000001490116
0.200000002980232
0.300000004470348
0.400000005960464
0.500000007450581
0.600000008940697
0.700000010430813
0.800000011920929
0.900000013411045
1.00000001490116
1.10000001639128
1.20000001788139
1.30000001937151
1.40000002086163
1.50000002235174
1.60000002384186
1.70000002533197
1.80000002682209
1.90000002831221
2.00000002980232

What should I do to correct the problem?

Nath

2 posts / 0 nouveau(x)
Dernière contribution
Reportez-vous à notre Notice d'optimisation pour plus d'informations sur les choix et l'optimisation des performances dans les produits logiciels Intel.

Replace "step=0.1" by "step=0.1d0".

Connectez-vous pour laisser un commentaire.