是我疯了,还是vfp疯了 后续问题

yunle370 2009-12-17 04:35:19
该段代码所实现的目的,感谢wwwa帮我解决
现在的问题是我想知道
为什么遇到xx等于0.00 或0.01 之后会出现混乱
哪位能不能解释一下


DECLARE aa(6)
FOR x=1 TO 6
DO WHILE .t.
aa=0
xx=RAND()
CLEAR
?xx
IF (xx <0.34) AND (xx>0)
??xx,100*xx,INT(xx*100)
xx=INT(xx*100)
IF xx=0
WAIT
ENDIF
h1=0
IF x>1
FOR h=1 TO x-1
IF xx=aa(h)
h1=h1+1
ENDIF
ENDFOR
ENDIF
ELSE
LOOP
ENDIF
ENDDO
ENDFOR
...全文
61 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yunle370 2009-12-17
  • 打赏
  • 举报
回复
非常感谢各位
WWWWA 2009-12-17
  • 打赏
  • 举报
回复
确认是精度问题
SET DECIMALS TO 12
再运行你的程序,看看结果
xuzuning 2009-12-17
  • 打赏
  • 举报
回复
谁也没有疯

SET FIXED ON
DECLARE aa(6)
FOR x=1 TO 6
DO WHILE .t.
aa=0
xx=RAND()
CLEAR
?xx
IF (xx <0.34) AND (xx>0)
??xx,100*xx,INT(xx*100)
SET DECIMALS TO 10
? '=>',xx,100*xx,INT(xx*100)
SET DECIMALS TO 2

xx=INT(xx*100)
IF xx=0
WAIT
ENDIF
h1=0
IF x>1
FOR h=1 TO x-1
IF xx=aa(h)
h1=h1+1
ENDIF
ENDFOR
ENDIF
ELSE
LOOP
ENDIF
ENDDO
ENDFOR
ACMAIN_CHM 2009-12-17
  • 打赏
  • 举报
回复
计算机中浮点数计算的问题,但不清楚VFP的内部机制,估计INT()中有某些运算导致的。
WWWWA 2009-12-17
  • 打赏
  • 举报
回复
测试了一下,估计是精度问题
xx=INT(xx1*100/100)
这样就没有问题
yunle370 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wwwwa 的回复:]
为什么遇到xx等于0.00 或0.01 之后会出现混乱:
详细说明,是数组内容还是程序执行的问题
[/Quote]
IF (xx <0.34) AND (xx>0)
??xx,100*xx,INT(xx*100)
xx=INT(xx*100)
这一部分出现问题,你执行一遍就知道了
WWWWA 2009-12-17
  • 打赏
  • 举报
回复
为什么遇到xx等于0.00 或0.01 之后会出现混乱:
详细说明,是数组内容还是程序执行的问题
相关推荐
日语一级单词表日语一级单词表够详细了,有助于日语的学习,还不够吗,了日语一级单词表够详细了,有助于日语的学习,还不够吗,了日语一级单词表够详细了,有助于日语的学习,还不够吗,了日语一级单词表够详细了,有助于日语的学习,还不够吗,了日语一级单词表够详细了,有助于日语的学习,还不够吗,了日语一级单词表够详细了,有助于日语的学习,还不够吗,了日语一级单词表够详细了,有助于日语的学习,还不够吗,了日语一级单词表够详细了,有助于日语的学习,还不够吗,了日语一级单词表够详细了,有助于日语的学习,还不够吗,了日语一级单词表够详细了,有助于日语的学习,还不够吗,了日语一级单词表够详细了,有助于日语的学习,还不够吗,了日语一级单词表够详细了,有助于日语的学习,还不够吗,
发帖
VFP

2573

社区成员

VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
帖子事件
创建了帖子
2009-12-17 04:35
社区公告
暂无公告