Я использую Visual Studio (2010 SP1) с Fortran IMSL (2011) и не могу получить правильную точность для своих вещественных чисел:
program prova
use, intrinsic :: iso_fortran_env
implicit none
integer, parameter :: ikind=selected_real_kind(p=8, r=99)
real(kind=ikind) :: a=0.79
real(real64) :: b=0.79
real(kind=16) :: c=0.79
real(8) :: d=0.79
print *, a
print *, b
print *, c
print *, d
end program prova
дайте мне тот же результат: 0.790000021457672
(один с большей точностью, один с меньшей точностью, но каждое число отличается от назначенного: 0,79)
Почему мою готовность не уважают?
Как я могу установить все вещественные числа с необходимой точностью?
NB: моя проблема никак не связана с "ограниченностью компьютера", округлением чисел и тому подобным. моя проблема касается типа/вида переменной в Фортране.
gfortran
это делается с помощью-freal-XX-real-YY
см. здесь. Для других компиляторов существуют эквивалентные директивы. Но лично я бы рекомендовал придерживаться явного объявления. Это соответствует стандарту и поддерживается всеми основными компиляторами. Он также проще для чтения и менее подвержен ошибкам. 14.06.2015