关于fortran的复数计算问题
program ex0411complex::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:53 编辑
浮点数误差,很正常的。单精度只有6-7位有效数字。
接受它就好了。
就好像,如果有个外星人,用三进制。那么它会觉得,人类的数学好奇怪,1除以3,居然等于 0.3333333(假设7位有效数字)
不应该等于 0.1(三进制) 吗?
kyra 发表于 2018-7-27 13:52
浮点数误差,很正常的。单精度只有6-7位有效数字。
接受它就好了。
大概明白了 谢谢
页:
[1]