Fortran Coder

查看: 24258|回复: 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)

请问是为什么?
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

259

帖子

0

主题

0

精华

版主

World Analyser

F 币
717 元
贡献
510 点

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

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位有效数字。
接受它就好了。

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

本版积分规则

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

GMT+8, 2024-11-23 20:39

Powered by Tencent X3.4

© 2013-2024 Tencent

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