关于fortran的复数计算问题-Fortran语法讨论-专业Fortran论坛 -

Fortran Coder

查看: 53|回复: 2

[数值问题] 关于fortran的复数计算问题

[复制链接]

2

帖子

1

主题

0

精华

新人

F 币
13 元
贡献
6 点
发表于 2018-7-27 11:55:06 | 显示全部楼层 |阅读模式
[Fortran] 纯文本查看 复制代码
program ex0411
	complex::a,b
	a=(1.0,1.0)
	b=(1.0,2.0)
	write(*,*) "a+b=",a+b
	write(*,*) "a-b=",a-b
	write(*,*) "a*b=",a*b
	write(*,*) "a/b=",a/b
	stop
end


代码如上,前三个计算机过都和书上一致,但是当计算a/b时,按道理结果应该是(0.6000000,-0.2000000)
但是我的结果是(0.600000024,-0.200000003)

请问是为什么?
回复

使用道具 举报

104

帖子

0

主题

0

精华

版主

World Analyser

F 币
98 元
贡献
181 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
发表于 2018-7-27 13:52:04 | 显示全部楼层
本帖最后由 kyra 于 2018-7-27 13:53 编辑

浮点数误差,很正常的。单精度只有6-7位有效数字。
接受它就好了。

就好像,如果有个外星人,用三进制。那么它会觉得,人类的数学好奇怪,1除以3,居然等于 0.3333333(假设7位有效数字)
不应该等于 0.1(三进制) 吗?

2

帖子

1

主题

0

精华

新人

F 币
13 元
贡献
6 点
 楼主| 发表于 2018-7-27 14:25:22 | 显示全部楼层
kyra 发表于 2018-7-27 13:52
浮点数误差,很正常的。单精度只有6-7位有效数字。
接受它就好了。

大概明白了 谢谢
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2018-8-16 18:49

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

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