Fortran Coder

标题: 关于fortran的复数计算问题 [打印本页]

作者: sahirabbb    时间: 2018-7-27 11:55
标题: 关于fortran的复数计算问题
[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)

请问是为什么?

作者: kyra    时间: 2018-7-27 13:52
本帖最后由 kyra 于 2018-7-27 13:53 编辑

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

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

作者: sahirabbb    时间: 2018-7-27 14:25
kyra 发表于 2018-7-27 13:52
浮点数误差,很正常的。单精度只有6-7位有效数字。
接受它就好了。

大概明白了 谢谢




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2