找回密码
 注册
Simdroid-非首页
查看: 198|回复: 4

[3. Fortran] fortran保留的有效位数问题?

[复制链接]
发表于 2005-5-24 21:05:09 | 显示全部楼层 |阅读模式 来自 江苏南京
测试程序如下:

PROGRAM PQ
IMPLICIT NONE
INTEGER::H
INTEGER, PARAMETER :: P2=SELECTED_REAL_KIND(15)
REAL(P2)::A
REAL(KIND=8)::B
REAL(KIND=4)::C
A=SQRT(2.0)
B=SQRT(2.0)
C=SQRT(2.0)
WRITE(*,'(F50.40)')A
WRITE(*,'(F50.40)')B
WRITE(*,'(F50.40)')C
WRITE(*,'(F20.16)')C
END PROGRAM PQ

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2005-5-25 12:22:37 | 显示全部楼层 来自 江苏南京

Re:fortran保留的有效位数问题?

Simdroid开发平台
2.0是单精度常量,SQRT(2.0)的返回值也是单精度的,修改如下再试试:
A=SQRT(2.D0)
B=SQRT(2.D0)
C=SQRT(2.D0)
发表于 2005-5-25 16:21:55 | 显示全部楼层 来自 日本

Re:fortran保留的有效位数问题?

INTEGER, PARAMETER :: P1=SELECTED_REAL_KIND( 8 )
INTEGER, PARAMETER :: P2=SELECTED_REAL_KIND(15)
WRITE(*,'(I3,F50.40)') P1,1.0/3.0_P1
WRITE(*,'(I3,F50.40)') P2,1.0/3.0_P2

P1, P2 is machine depedent constants. Running above program in your machine, if P1 and P2 share the same value, the result is of course the same.
 楼主| 发表于 2005-5-27 08:34:44 | 显示全部楼层 来自 江苏南京

Re:fortran保留的有效位数问题?

GWinston wrote:
2.0是单精度常量,SQRT(2.0)的返回值也是单精度的,修改如下再试试:
A=SQRT(2.D0)
B=SQRT(2.D0)
C=SQRT(2.D0)

如果要提高精度,那么 2.D0 又该怎么写呢?
谢谢.
 楼主| 发表于 2005-5-31 13:46:53 | 显示全部楼层 来自 江苏南京

Re:fortran保留的有效位数问题?

hillyuan wrote:
INTEGER, PARAMETER :: P1=SELECTED_REAL_KIND( 8 )
INTEGER, PARAMETER :: P2=SELECTED_REAL_KIND(15)
WRITE(*,'(I3,F50.40)') P1,1.0/3.0_P1
WRITE(*,'(I3,F50.40)') P2,1.0/3.0_P2

P1, P2 is machine depedent constants. Running above program in your machine, if P1 and P2 share the same value, the result is of course the same.

偶试了,P1=P2,
那么,偶的机器只能有REAL(8)的精度了?
其他软件却可以,如MATHEMATIC等.
谢谢指点.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-11-2 01:25 , Processed in 0.037769 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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