回 帖 发 新 帖 刷新版面

主题:为什么我读取数据再输出就不一样了

这是我定义的程序,但是我定义的π,输出的时候是3.14159274101257,这是什么原因?感谢各位大侠
program main

implicit none

real(8)::PI

PI=3.14159265358979323846

write(*,*)PI

end

回复列表 (共4个回复)

沙发


是不是因为截断误差?为什么会有这样大的误差?我如果写成PI=3.14159265358979323846D0结果就对了。如何来缩小这个误差?有什么有效的方法,请各位大侠支招

板凳

3.14159265358979323846

是一个单精度的常数,而 PI 是一个双精度的变量

双精度变量 = 单精度常数

这个语句执行时就会引起精度的丢失。

有效的办法就是像你那样,把单精度的常量写成双精度的。3.14159265358979323846D0

3 楼

谢谢啊,看来只能这样了!

4 楼

学习了~

我来回复

您尚未登录,请登录后再回复。点此登录或注册