【发布时间】:2018-01-20 04:25:18
【问题描述】:
我正在转换一个至少保持 16 位小数精度的 FORTRAN 代码。 我在 VBA excel 中遇到了除以零的问题,但是如果我在 this online compiler 上尝试下面的代码,我不会得到零。 任何帮助表示赞赏。提前致谢。
这是fortran代码
program sum
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
x = 3.14159265358979
y = 1.24325643454325
z = (x*y)/dtan(0.0D0)
print *, datan(.04D0*z)
end program sum
这是 VBA 代码
Public Function dosomething()
Dim X As Double
Dim Y As Double
Dim Z As Double
X = 3.14159265358979
Y = 1.24325643454325
Z = (X * Y) / Tan(0#)
End Function
【问题讨论】:
-
这看起来不像 VBA 代码。如果您希望 VBA 人员提供帮助,介意分享实际的 VBA 代码吗?
-
这是 Fortran 代码,如果我在 Fortran 在线编译器上尝试它可以工作,但如果我在 VBA 中尝试它就不起作用。
-
0的切线是0,所以你要除以0,因此会出现错误。 -
但您的代码显示
Tan(0)而不是Tan(1E-16)。所以把它放进去,你就不会再收到divided by 0错误了。 -
请注意,要在
x和y变量中保持双精度,您必须将指示符d0附加到数字后,如x=3.14159265358979d0。这是一个常见的错误。如果不这样做,编译器通常会假定变量是单精度的,并且仅保留原始赋值的前 7 位数字。
标签: vba excel fortran fortran77