设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

小数问题

查看数: 2920 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2013-5-22 18:59

正文摘要:

本帖最后由 wbsy8241 于 2013-5-26 03:42 编辑 我在脚本中使用每帧+0.2 但多次计算后结果会变x.9999999999 或 x.0000000011000.times.inject(0.0){|r,i| Graphics.update p Graphics.frame_count.to_s + "  ...

回复

wbsy8241 发表于 2013-5-26 03:41:27
  0.20000001.round(5)
=0.2000│0001
=0.2000
=0.2

  0.19999999.round(5)
=0.1999│9999
=0.2000
=0.2


  0.33333333.round(5)
=0.3333|3333
=0.3333

  (0.3333+0.33333333).round(5)
=0.666633333333.round(5)
=0.6666|3333
=0.6666

  (0.6666+0.33333333).round(5)
=0.999933333333.round(5)
=0.9999|3333
=0.9999

  (0.9999+0.33333333).round(5)
=1.333233333333.round(5)
=1.3332|3333
=1.3332

点评

判断的时候再 round 。- -b  发表于 2013-5-27 23:31
没的认可 也没人回就算了 百度了这不是RUBY特有的问题解决不了.  发表于 2013-5-27 20:52
你自己搞定了? - -b  发表于 2013-5-26 09:19
Sion 发表于 2013-5-22 19:50:13
wbsy8241 发表于 2013-5-22 19:24
我要判断是不是到了1整格 怎么能用round呢
那启不是我永远走不出第一格了...(0.2).round = 0
或者走了1半 ...
  1. 0.2.round(5)          #=> 0.2
  2. 0.2000000001.round(5) #=> 0.2
复制代码

点评

你先搞清楚 round(x) 这个函数的作用.  发表于 2013-5-22 20:06
现在是5帧走完1格 3帧走完 就不适用了 0.33333 * 3 = 0.99999  发表于 2013-5-22 19:57
wbsy8241 发表于 2013-5-22 19:24:04
Sion 发表于 2013-5-22 19:15
这是浮点运算的bug。使用 round 函数吧,精度应该不需要要那么高的。


我要判断是不是到了1整格 怎么能用round呢
那启不是我永远走不出第一格了...(0.2).round = 0
或者走了1半瞬移到下一格

用默认的公式 + 2**x / 256.0
完全没问题啊
一直是 0.125 0.25 0.375 0.5 不会出现那么长的.99999或.000001

点评

对所有浮点数计算都这样吗= = 或者 要是必须要小数的怎么办比如1/3  发表于 2013-5-22 19:40
.round(5) 里面设置个合适的数  发表于 2013-5-22 19:30
Sion 发表于 2013-5-22 19:15:56
这是浮点运算的bug。
  1. 0.1 + 0.2 #=> 0.300000.....04
复制代码
使用 round 函数吧,精度应该不需要要那么高的。
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-18 16:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表