回 帖 发 新 帖 刷新版面

主题:关于Fortran有效数字的问题,如何减小有效数字

Fortran中real定义的4b长度量a
a=1./10000
输出结果是9.99999975E-05
我想结果是0.0001或者等价于0.0001的一个数,请问怎么办

而且如果用real  a
去读取一个之前已经存好的dat文件,
0.0001的读取结果也是9.99999975E-05

现在只能控制输出格式,可以办到是0.0001,但是进入计算中就变回到9.99999975E-05

跪求帮忙


回复列表 (共8个回复)

沙发

改用real(8)提高精度吧。

板凳


我想把精度降到*4以下。。。real*的结果更离谱

3 楼

[quote]改用real(8)提高精度吧。[/quote]
我是想把精度调到*4以下,*8的更离谱

而且我想知道究竟怎么办才能把结果搞成0.0001或者等效的结果,而不是误差这么大

4 楼

很多小数都是无法用计算机精确表示的。Real*8精度肯定比Real*4要好。

5 楼

[quote][quote]改用real(8)提高精度吧。[/quote]
我是想把精度调到*4以下,*8的更离谱

而且我想知道究竟怎么办才能把结果搞成0.0001或者等效的结果,而不是误差这么大[/quote]
不是很明白楼主"调到*4以下"是什么意思.

6 楼

[quote][quote][quote]改用real(8)提高精度吧。[/quote]我是想把精度调到*4以下,*8的更离谱
而且我想知道究竟怎么办才能把结果搞成0.0001或者等效的结果,而不是误差这么大[/quote]不是很明白楼主"调到*4以下"是什么意思.[/quote]估计是楼主看见如果是REAL*8,那数字“9”更多,所以就感觉更“离谱”了吧:)其实0.0001减去那个REAL*8的数所得的误差肯定小于REAL*4:)
而楼主想要的只是那个“9”少些~~~~~
哈哈哈:)楼主要冷静啊:)

7 楼

[quote][quote][quote][quote]改用real(8)提高精度吧。[/quote]我是想把精度调到*4以下,*8的更离谱
而且我想知道究竟怎么办才能把结果搞成0.0001或者等效的结果,而不是误差这么大[/quote]不是很明白楼主"调到*4以下"是什么意思.[/quote]估计是楼主看见如果是REAL*8,那数字“9”更多,所以就感觉更“离谱”了吧:)其实0.0001减去那个REAL*8的数所得的误差肯定小于REAL*4:)
而楼主想要的只是那个“9”少些~~~~~
哈哈哈:)楼主要冷静啊:)[/quote]

其实我后来计算的时候已经用到了real*8,但是结果还是很不靠谱,把一个标准的均匀分布通过chi平方检验变成了不符合标准的分布。。。很蛋疼,附上刚才问题的地址http://bbs.pfan.cn/post-378359.html,帮忙看下,的确很蛋疼……

8 楼

[quote][quote][quote]改用real(8)提高精度吧。[/quote]
我是想把精度调到*4以下,*8的更离谱

而且我想知道究竟怎么办才能把结果搞成0.0001或者等效的结果,而不是误差这么大[/quote]
不是很明白楼主"调到*4以下"是什么意思.[/quote]
其实表述不是很确切,意思就是:想让1/10000.的结果更接近1.0000e-04而已。没想到误差这么大……最后偏离最终结果很多

我来回复

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