24小时热门版块排行榜    

查看: 497  |  回复: 3

astringent

铜虫 (著名写手)


[交流] 【求助】浮点数作为判断条件对结果又影响吗?

有一数组好h(20),h的值不是0就是1,我在声明时设成浮点数了,但是我在程序后面用它作为了判断条件,请问时候会引起误差?程序是这样的:
program test
implicit none
real h(20)
integer i
real sum,
sum=0.0
do i=1,20
    if (h(i)/=0) then
       sum=sum+i
     endif
enddo
另外,我有数组a(5),b(5),均为整型,sum为浮点数型,先要将数组a,b相乘并累加,是不是将a乘b的值先转化乘浮点数型(采用real).然后累加就可以保证精度了,
integer ::a(5),b(5)
real :: sum=0.0
do i=1,5
    sum=sum+real(a(i)*b(i))
enddo
回复此楼

» 猜你喜欢

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hakekill

木虫 (小有名气)


★ ★
余泽成(金币+2): 谢谢参与应助! 2011-02-27 15:04:48
astringent(金币+20): 2011-03-01 16:01:27
最好是不要直接用浮点数来做判断,可以用(abs( h(i) ) < 1.0e-6)来代替。

第二个的real转换可以不用,在于sum相加的时候会自动完成这个过程。
2楼2011-02-23 09:11:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

astringent

铜虫 (著名写手)


引用回帖:
Originally posted by hakekill at 2011-02-23 01:11:08:
最好是不要直接用浮点数来做判断,可以用(abs( h(i) ) < 1.0e-6)来代替。

第二个的real转换可以不用,在于sum相加的时候会自动完成这个过程。

是这样的,对于第一个问题,我的完整程序为:
real ::h(20),sum
integer i
open (8,file='test.out',status='old')
h=0.0
do i=1,20
    read(8,*)  h(i)
    if(条件1) then
     h=1.0
    endif
enddo
do i=1,20
    if (h(i)/=0) then
请问这个判断条件会不会对结果又影响,谢谢
3楼2011-02-23 16:12:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hakekill

木虫 (小有名气)


★ ★
余泽成(金币+2): 谢谢参与应助! 2011-02-27 15:04:59
这个结果严格来说是不可预知的,不过现代编译器都这么强,说不定不会对结果造成影响。不过我还是建议将h(i)/=0改成abs(h(i)) < 1.0e-6。
4楼2011-02-24 12:50:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 astringent 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见