Question about simple algebra error in intel fortran 90

Question about simple algebra error in intel fortran 90

I have computed the following :

-------------------------------

real(kind=8) :: x, y, z

x = 1.0_8
y = 0.9747_8
z = x - y

---------------------------------

but the result is "2.529999999999999E-002", not "2.53e-002".

Why this happen?

2 帖子 / 0 全新
最新文章
如需更全面地了解编译器优化,请参阅优化注意事项

As the 53-bit binary precision of real(8) is equivalent to 15 to 17 decimal digits precision, and you lose a few bits by subtraction of similar magnitute numbers, that's all the accuracy you can expect.  If you would specify formatting with rounding to 15 or fewer digits, you should get what you expected.

登陆并发表评论。