Fortran Coder

查看: 18516|回复: 5
打印 上一主题 下一主题

[数值问题] Error: Return type mismatch of function 'add' at (1) (REAL(4)/REAL(8))

[复制链接]

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

楼主
发表于 2016-4-22 16:54:59 | 显示全部楼层
Implicit None 非常重要,建议新手朋友切勿省略。

[Fortran] 纯文本查看 复制代码
program main
  Implicit None !// 非常重要
  real(kind=8)::x=8.0d0 , add !//常数要加 d0,要定义 add
  real(kind=8)::y
  y=add(1,x)
  write(*,*)y
end program main

real(kind=8) function add(I,x)
  Implicit None !//非常重要
  integer :: i  !// 定义
  real(kind=8) :: x !//定义
  if(I==1) add=x+10.0d0 !//常数要加 d0
end function add

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2016-4-23 09:24:33 | 显示全部楼层
双精度常量要加 d0,单精度不用。因为编译器,默认都是单精度的。
单精度有效位数在 6 到 7 位之间。双精度大概15位。有效位数的概念,你可以百度一下。初中数学应该学过。

关于浮点数精度的问题,你还可以看视频教程第五期:http://v.fcode.cn/video-variable_type.html

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

板凳
发表于 2016-4-23 13:39:14 | 显示全部楼层
bingo
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-17 18:50

Powered by Tencent X3.4

© 2013-2024 Tencent

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