主题:关于Fortran有效数字的问题,如何减小有效数字
dogschr
[专家分:0] 发布于 2011-11-10 14:26:00
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个回复)
沙发
cgl_lgs [专家分:21040] 发布于 2011-11-10 14:58:00
改用real(8)提高精度吧。
板凳
dogschr [专家分:0] 发布于 2011-11-10 16:23:00
我想把精度降到*4以下。。。real*的结果更离谱
3 楼
dogschr [专家分:0] 发布于 2011-11-10 16:25:00
[quote]改用real(8)提高精度吧。[/quote]
我是想把精度调到*4以下,*8的更离谱
而且我想知道究竟怎么办才能把结果搞成0.0001或者等效的结果,而不是误差这么大
4 楼
cgl_lgs [专家分:21040] 发布于 2011-11-10 17:42:00
很多小数都是无法用计算机精确表示的。Real*8精度肯定比Real*4要好。
5 楼
yeg001 [专家分:14390] 发布于 2011-11-10 18:38:00
[quote][quote]改用real(8)提高精度吧。[/quote]
我是想把精度调到*4以下,*8的更离谱
而且我想知道究竟怎么办才能把结果搞成0.0001或者等效的结果,而不是误差这么大[/quote]
不是很明白楼主"调到*4以下"是什么意思.
6 楼
cgl_lgs [专家分:21040] 发布于 2011-11-11 16:49:00
[quote][quote][quote]改用real(8)提高精度吧。[/quote]我是想把精度调到*4以下,*8的更离谱
而且我想知道究竟怎么办才能把结果搞成0.0001或者等效的结果,而不是误差这么大[/quote]不是很明白楼主"调到*4以下"是什么意思.[/quote]估计是楼主看见如果是REAL*8,那数字“9”更多,所以就感觉更“离谱”了吧:)其实0.0001减去那个REAL*8的数所得的误差肯定小于REAL*4:)
而楼主想要的只是那个“9”少些~~~~~
哈哈哈:)楼主要冷静啊:)
7 楼
dogschr [专家分:0] 发布于 2011-11-14 07:57:00
[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 楼
dogschr [专家分:0] 发布于 2011-11-14 07:59:00
[quote][quote][quote]改用real(8)提高精度吧。[/quote]
我是想把精度调到*4以下,*8的更离谱
而且我想知道究竟怎么办才能把结果搞成0.0001或者等效的结果,而不是误差这么大[/quote]
不是很明白楼主"调到*4以下"是什么意思.[/quote]
其实表述不是很确切,意思就是:想让1/10000.的结果更接近1.0000e-04而已。没想到误差这么大……最后偏离最终结果很多
我来回复