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

Project1

 找回密码
 注册会员
搜索
查看: 1853|回复: 5
打印 上一主题 下一主题

[已经解决] 关于 增加0.01的小数点 后面出现好多零的问题

[复制链接]

Lv2.观梦者

梦石
0
星屑
575
在线时间
1752 小时
注册时间
2008-11-7
帖子
1431
跳转到指定楼层
1
发表于 2014-10-2 20:21:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x


刚开始是 0.5的  每次增加 0.01后 到了一定的点后 会出现 0.6000000003  这样后面的 数字 如何清除掉
RPG魔塔:http://rpg.blue/thread-254429-1-1.html
魔塔2:http://rpg.blue/thread-303601-1-1.html
魔塔3: 制作中...MV

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

2
发表于 2014-10-2 20:44:09 | 只看该作者
1. 浮点数都是近似数, 在计算时一定会出错, 不解释
2. 请使用整数, 在描画字符串时通过简单的字符操作表示成小数即可

点评

我是这样加的 $game_variables[200] += 0.01  发表于 2014-10-2 21:30
不一定会出错的,比如 0.5 + 0.5 这种就不会  发表于 2014-10-2 21:13

评分

参与人数 2星屑 +166 收起 理由
taroxd + 66 认可答案
VIPArcher + 100 塞糖

查看全部评分


  -fk: -azogi:
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

3
发表于 2014-10-2 21:14:39 | 只看该作者
1. 用整数存储,表示时再除以 100.0
2. 显示时对浮点数 x 调用 x.round(2) (保留两位小数,四舍五入)

点评

"显示时“调用  发表于 2014-10-3 06:34
$game_variables[200].round(2) += 0.01 报错 $game_variables[200].round(2) + 0.01 无效  发表于 2014-10-2 22:01
$game_variables[200].round(2) 可以得到两位小数的近似值  发表于 2014-10-2 21:34
写个例子 看看  发表于 2014-10-2 21:32
太复杂了 看不懂  发表于 2014-10-2 21:32

评分

参与人数 1星屑 +150 收起 理由
VIPArcher + 150 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21437
在线时间
9386 小时
注册时间
2012-6-19
帖子
7114

开拓者短篇九导演组冠军

4
发表于 2014-10-2 21:40:30 | 只看该作者
  1. sprintf("%.2f",$game_variables[200])
复制代码

点评

没用 还是会 有0.1500000000006  发表于 2014-10-2 21:58

评分

参与人数 2星屑 +180 收起 理由
无脑之人 + 30 一语中的
VIPArcher + 150 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21437
在线时间
9386 小时
注册时间
2012-6-19
帖子
7114

开拓者短篇九导演组冠军

5
发表于 2014-10-3 00:13:48 | 只看该作者
本帖最后由 喵呜喵5 于 2014-10-3 00:16 编辑

@Window
(请无视上面的艾特)

  1. class Window_Test < Window_Base
  2.   def initialize
  3.     super(0, 0, Graphics.width,Graphics.height)
  4.     @text = 0.5
  5.     7.times do
  6.       p @text += 0.01
  7.     end
  8.     refresh
  9.   end
  10.   def refresh
  11.     contents.clear
  12.     draw_text(0, 0, 544,24,sprintf("%.2f",@text))
  13.     draw_text(0, 24, 544,24,@text.round(2))
  14.     draw_text(0, 48, 544,24,@text)
  15.   end  
  16. end
  17. class Scene_Title
  18.   alias m5_test_start start
  19.   def start
  20.     m5_test_start
  21.     @window = Window_Test.new
  22.   end
  23. end
复制代码

点评

变量1 = 变量2 然后 变量1 / =100.0 增加的时候 变量2 += 1 搞定  发表于 2014-10-3 09:35
无语了 还是一样  发表于 2014-10-3 09:27
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

6
发表于 2014-10-3 11:12:57 | 只看该作者
  1. x=1
  2. y=1
  3. x*=100
  4. x+=y
  5. x/=100.0
复制代码

点评

那个我没试,楼主自己说的没效果我才发了一个最原始的- -|||  发表于 2014-10-3 21:57
@无脑之人 认真你就输了。C神是无敌的  发表于 2014-10-3 21:50
你完全没解决问题,反而拉低了效率。说sprintf没效果的,手残吧。  发表于 2014-10-3 21:46
↓这个方法虽然很麻烦但是绝对不会和其他脚本什么的产生冲突···楼上的楼上的楼主用了就说没效果- -|||  发表于 2014-10-3 20:29
我呵呵……  发表于 2014-10-3 19:55
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2025-2-23 01:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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