查看: 5856|回复: 18

[已经过期] RGSS3又一個坑娘的BUG

[复制链接]
梦石
0
星屑
555
在线时间
177 小时
注册时间
2006-10-3
回帖
532
发表于 2014-4-3 09:49:38 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
i=1.0
i-=0.1
i-=0.1
i-=0.1
i-=0.1
i-=0.1
i-=0.1
i-=0.1
i-=0.1
i-=0.1
p i

以上的腳本在RMVX得出0.1,而RMACE上卻得出0.10000000000000014這樣的腦殘數值。。

而一個遊戲裏 判斷 當 i>0.1時才遞減,但是由於RMACE的腦殘數值,結果運算結果不正常!

点评

你写成i>0.1,C++会出这个错误,也不是常识,不要用你的误解误导别人。见我下面10楼的回复。  发表于 2014-4-6 13:09
C++不會出這個錯誤這是常識,RUBY不會出這個錯誤這也是常識,偏偏RGSS3就會出這個錯誤這是常識?  发表于 2014-4-4 12:05
“ 晴兰 + 20 写出i>0.1是常识问题不是bug” 我是說浮點數精度丟失BUG才導致出錯,VX不會出錯也是常識問題?ACE會出錯這就是常識?  发表于 2014-4-4 12:00

评分

参与人数 1星屑 +40 收起 理由
晴兰 + 40 常识是浮点比较写成i>0.1+eps,eps可以取1e.

查看全部评分

在我初学RM的时候觉得脚本是高手的工具,等我学会了编程技术后才发现脚本原来是小孩子的玩具。

八宝粥的基叔

梦石
0
星屑
4957
在线时间
5234 小时
注册时间
2009-4-29
回帖
14054

贵宾

发表于 2014-4-3 10:14:15 | 显示全部楼层
每自减一次就msgbox一次,看看哪一步出错

点评

第四行就出错了,ACE里i变成了0.7000000000000001,多出个0.0000000000000001  发表于 2014-4-3 19:31
《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复

使用道具 举报

梦石
1
星屑
12019
在线时间
4535 小时
注册时间
2005-10-22
回帖
7097

开拓者贵宾

发表于 2014-4-3 11:48:03 | 显示全部楼层

VX到VA完成了一次计算机科学回到解放前的革命么~\(≧▽≦)/~

点评

幸好RMlinkSZK的模版工程是選用VX的,否則肯定悲劇  发表于 2014-4-3 19:34
回复

使用道具 举报

八宝粥的基叔

梦石
0
星屑
4957
在线时间
5234 小时
注册时间
2009-4-29
回帖
14054

贵宾

发表于 2014-4-3 20:11:37 | 显示全部楼层
i = 1.0
i -= 0.1
i = (i * 10).round / 10.0
每次自减都做这三步吧
《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复

使用道具 举报

梦石
0
星屑
266
在线时间
2355 小时
注册时间
2009-3-13
回帖
2257

贵宾

发表于 2014-4-3 20:36:18 | 显示全部楼层
自己 round 呗。浮点数也是取近似值,精度一般用不到那么高,直接用整型得了。

点评

这不脑残,0.1是二进制的无限循环小数。就跟我们用0.33333333有限个3表示1/3差不多。  发表于 2014-4-6 13:13
精度如果是乘法除法確實是近似,但是連減去0.1都會導致RGSS3的浮點精度丟失就有點腦殘了  发表于 2014-4-4 11:54

评分

参与人数 1星屑 +50 收起 理由
怪蜀黍 + 50 认可答案

查看全部评分

回复

使用道具 举报

唯一的信徒

梦石
0
星屑
1697
在线时间
1359 小时
注册时间
2013-1-29
回帖
1537
发表于 2014-4-3 22:45:14 | 显示全部楼层
论为什么不应该进行大量浮点数运算
『我只是一个正在潜心修炼的渣乐师罢了』
Dear Time\(^o^)/~


假如上面的图片挂了的话麻烦各位去发个帖 @ 一下 orzFly 让他修复 deartime
回复

使用道具 举报

梦石
0
星屑
122
在线时间
552 小时
注册时间
2012-8-18
回帖
1392
发表于 2014-4-4 12:39:38 | 显示全部楼层
RGE问题比这还严重……
设计的时候避免就好了啦,以前精度各种丢的时候不还是一样该做做←←
我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复

使用道具 举报

老黄鸡

梦石
4
星屑
45767
在线时间
7953 小时
注册时间
2009-7-6
回帖
13338

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 2014-4-4 12:50:51 | 显示全部楼层
运算的时候尽量别用浮点,取结果的时候再取,比如你这里可以改成
  1. i=10
  2. p i.to_f/10
  3. i-=1
  4. p i.to_f/10
  5. i-=1
  6. p i.to_f/10
  7. i-=1
  8. p i.to_f/10
  9. i-=1
  10. p i.to_f/10
  11. i-=1
  12. p i.to_f/10
  13. i-=1
  14. p i.to_f/10
  15. i-=1
  16. p i.to_f/10
  17. i-=1
  18. p i.to_f/10
  19. i-=1
  20. p i.to_f/10
复制代码

评分

参与人数 1星屑 +50 收起 理由
怪蜀黍 + 50 认可答案

查看全部评分

RGDirect - DirectX驱动的RGSS,点我了解.
(排满,暂停)RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2014-4-4 21:22:12 | 显示全部楼层
笨方法= =把小数扩大10*N倍···计算完再缩回去···

点评

话说有时人物自动向上走是不是也算BUG呢  发表于 2014-4-6 06:54
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
回帖
1577

开拓者

发表于 2014-4-6 12:58:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部