提问人:ZeroTwo 提问时间:8/27/2021 最后编辑:RobZeroTwo 更新时间:9/1/2021 访问量:327
Fortran 中用于三角函数的双精度 [重复]
Double precision in Fortran for trignometric functions [duplicate]
问:
我正在使用以下代码来计算 in 中的 。cos
pi/2
Fortran
program precision_Fortran
IMPLICIT NONE
!!integer, parameter :: dp = kind(1.0d0) !!Gives same result as line below
integer, parameter :: dp = selected_real_kind(15, 307)
Real(dp), parameter:: pi=4.0*atan(1.0)
Real(dp) :: angle
angle = cos(pi/2.0)
write(*,*)'pi = ', pi
write(*,*)'angle = ', angle
end program precision_Fortran
我使用 和 编译。两者的输出为gfortran
ftn95
pi = 3.1415927410125732
angle = -4.3711390001862412E-008
如何获得更好的精度?例如,在我看到它按 的顺序,对于所有使用 .angle
C++
E-18
double
如果需要更多信息来更好地解释它,请告诉我。
额外 :我使用的主要代码,物理方程具有三角项,存在精度问题,我不完全确定,但我怀疑这是因为这个。因此,想检查是否可以以某种方式改进上述内容。不是专家,所以很难弄清楚这一点。Fortran
答: 暂无答案
评论
pi=4.0*atan(1.0)
cos(pi/2.0_dp)
cos(pi/2)
pi
2
Real(dp), parameter:: pi=4.0d0*atan(1.0d0)