Fortran Coder

查看: 21911|回复: 7
打印 上一主题 下一主题

[数值问题] t是 时间,mod是什么意思?请问这个式子是什么意思呢?

[复制链接]

54

帖子

0

主题

0

精华

实习版主

F 币
653 元
贡献
214 点

元老勋章新人勋章

QQ
楼主
发表于 2021-4-27 15:23:23 | 显示全部楼层
SSLATELE 发表于 2021-4-27 10:42
老师你好,请问 a = mod(39.0_8,0.39_8) 为啥不是0,a已经定义为双精度了,结果是0.389999....... ...

mod 是如下定义:
   mod(A,B) = A - int(A/B) * B
modulo 是如下定义:
   modulo(A,B) = A - floor(A/B) * B

因此,你要得到 0.0,建议用 modulo
a = modulo(39.0_8,0.39_8)

54

帖子

0

主题

0

精华

实习版主

F 币
653 元
贡献
214 点

元老勋章新人勋章

QQ
沙发
发表于 2021-4-28 08:09:45 | 显示全部楼层
GCC-gfortran 对 modulo 的定义是和 mod 一样的。故而不适合楼主。
此时,应该自己书写 modulo 函数

[Fortran] 纯文本查看 复制代码
program hello
   Print *, moduu(39.0_8,0.39_8)
contains
  real(8) Function moduu(a,b)
    real(8) :: a , b
    moduu = A - floor(A/B) * B
  end function
end program Hello
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-3 14:23

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表