作者jubilee2 (3321)
看板Fortran
标题[问题] 精确度的问题
时间Mon Aug 30 16:34:17 2010
我有一个算式
想要取到小数点5位数 以後舍去或是四舍5入
例如
a=0.123456789 变成
a=0.123450000 或是
a=0.123460000
目前测试程式是
program tt123
implicit none
real e,f
e=0.123456789
f=e
write(*,*) e,f
f=f+1000
write(*,*) e,f
f=f-1000
write(*,*) e,f
end program tt123
结果是
0.1234568 0.1234568
0.1234568 1000.123
0.1234568 0.1234741
Press any key to continue
不是我想要的0.1230000
不知如何改才OK
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.116.77.208
※ 编辑: jubilee2 来自: 140.116.77.208 (08/30 16:35)
※ 编辑: jubilee2 来自: 140.116.77.208 (08/30 16:36)
1F:→ awer89:所以要4舍5入还是直接舍去 08/30 16:37
2F:→ jubilee2:因为我的程式需要叠带百万次以上 所以这些误差会很严重 08/30 16:43
3F:→ jubilee2:直接舍去最好 08/30 16:44
4F:→ jubilee2:自解..要用INT当中继站才能转换成功 08/30 16:53
5F:→ awer89:*1000後取整数部分即可 08/30 16:58
6F:→ awer89:取完整数把1000除回去 08/30 16:58
7F:推 sjgau:fortran 的 default real 是 *4, 精确度只有 5 - 6位 08/30 19:34
8F:→ sjgau:请改用 real*8, 然後,相关的系统函数呼叫,要使用 dsin() 08/30 19:35