是我疯了,还是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
...全文
69 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
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 之后会出现混乱:
详细说明,是数组内容还是程序执行的问题

2,718

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧