主题:为什么我读取数据再输出就不一样了
a04011531
[专家分:0] 发布于 2012-02-09 12:20:00
这是我定义的程序,但是我定义的π,输出的时候是3.14159274101257,这是什么原因?感谢各位大侠
program main
implicit none
real(8)::PI
PI=3.14159265358979323846
write(*,*)PI
end
回复列表 (共4个回复)
沙发
a04011531 [专家分:0] 发布于 2012-02-09 12:24:00
是不是因为截断误差?为什么会有这样大的误差?我如果写成PI=3.14159265358979323846D0结果就对了。如何来缩小这个误差?有什么有效的方法,请各位大侠支招
板凳
臭石头雪球 [专家分:23030] 发布于 2012-02-09 16:16:00
3.14159265358979323846
是一个单精度的常数,而 PI 是一个双精度的变量
双精度变量 = 单精度常数
这个语句执行时就会引起精度的丢失。
有效的办法就是像你那样,把单精度的常量写成双精度的。3.14159265358979323846D0
3 楼
a04011531 [专家分:0] 发布于 2012-02-14 18:35:00
谢谢啊,看来只能这样了!
4 楼
那兰1220 [专家分:50] 发布于 2012-02-15 14:44:00
学习了~
我来回复