主题:  在D里数值是不是不能精确到小数点后一位?

steady

职务:普通成员
等级:1
金币:0.0
发贴:22
注册:2001/6/5 9:50:57
#12001/8/7 16:26:46
如题!



poloer

职务:普通成员
等级:1
金币:1.0
发贴:139
注册:2000/11/20 20:47:52
#22001/8/7 16:45:05
the floatPrecision = 3
x = sqrt(3.0)
put x

-- 1.732
如果要1位的话,呵呵!!!



zwjn

职务:普通成员
等级:1
金币:0.0
发贴:110
注册:2000/12/7 9:29:52
#32001/8/8 9:31:01
把你的变量用float来定义就可以了



steady

职务:普通成员
等级:1
金币:0.0
发贴:22
注册:2001/6/5 9:50:57
#42001/8/8 11:00:38
float()只能是用来显示,并没有真正的意义,不能用来运算。
D好像会把想数点后的数值四舍五入后,再拿来运算。
有没有方法可以用来运算,比如说,让sprite的loch以0.3的值递增。



zwjn

职务:普通成员
等级:1
金币:0.0
发贴:110
注册:2000/12/7 9:29:52
#52001/8/8 18:06:50
老兄:)stage上最小的单位就是1,而且坐标肯定是整数,所以说你概念错误
float肯定是有的,我都拿它来做了好多东西了,不信你用message窗口打个
put 10.0/3
回车看看结果是什么,director默认是4位小数点



rainy_5d

职务:普通成员
等级:2
金币:1.0
发贴:225
注册:2000/10/23 19:44:16
#62001/8/8 20:16:52
是啊,我也注意到d默认的float类型的数是小数点后4位,有什么办法可以使其更精确吗?



poloer

职务:普通成员
等级:1
金币:1.0
发贴:139
注册:2000/11/20 20:47:52
#72001/8/9 9:48:54
steady 的问题,我好像问过,donlee帮助解决过,搜索poloer以前的帖子,可能会找到!!!



poloer

职务:普通成员
等级:1
金币:1.0
发贴:139
注册:2000/11/20 20:47:52
#82001/8/9 9:56:09
还是我贴过来吧!!! ;)

真正的原因在于loch是整数,它会动取整,试试下面的代码,再适当修改一下pstep的值,会得到你要的效果。
property ploch,pstep
on beginsprite me
pstep=0.3
ploch=sprite(me.spriteNum).loch
end
on exitframe me
ploch=ploch-pstep
sprite(me.spriteNum).loch=ploch
end



steady

职务:普通成员
等级:1
金币:0.0
发贴:22
注册:2001/6/5 9:50:57
#92001/8/9 11:08:04
poloer,你的那个办法可以实现我要的效果,thank you!
zwjn说的没错,我是犯了一个常识性错误,我仔细看了一下poloer的代码,发现它每次移动的单位还是1,不过是在原位置上等了1/pstep次后才挪动以下,所以,pstep的值约接近1,sprite移动的约流畅!
不过我不明白的是,为什么不能直接用sprite(me.spritenum).loc=sprite(me.spritenum).loc+pstep 或是 sprite(me.spritenum).loc=sprite(me.spritenum).loc+0.2 一定要把sprite的loch赋给别的变量?