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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: fssssss
打印 上一主题 下一主题

[已经解决] 问一个技能计算公式的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
55 小时
注册时间
2010-10-27
帖子
39
11
 楼主| 发表于 2013-11-4 13:13:56 | 只看该作者
tan12345 发表于 2013-11-4 13:12
不好意思,是我疏忽了……你这样子,b.hp * a.atk * 6.0 / b.mhp试试

恩,只要注意式子什么时候转化成整数就行了,懂得系统原理就迎刃而解。
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

12
发表于 2013-11-4 13:50:42 | 只看该作者
本帖最后由 喵呜喵5 于 2013-11-4 13:55 编辑

一路看下来大大那么多怎么就没有一个答到点子上的……

有的会变成0有的不会变成0这个涉及到了编程原理上,我不是专业的程序员所以可能下面的解释有点错误:

电脑需要为一个变量分配一定大小的空间,而分配的空间的大小决定了这个变量所能包含的最大值,Ruby语言作为动态语言其实已经屌炸天了,想想人家C语言,整型变量只有65536个,整型变量计算65536+65536直接溢出报错,Ruby则不会(因为会自动转换)。

然而,对,就是这个然而,即使Ruby再怎么动态再怎么智能,碰上小数的计算它也只能歇菜。计算机是很笨的,你给一个数字2,计算机哪知道你想表达的是2还是2.0还是2.000还是2.0000000000000000000000000,虽然这些数字在大小上一样,但是存储这些数字所需要的内存空间可是不同的,因此,计算机想出来的一劳永逸的方法就是默认情况下把你给的所有数字都四舍五入成整数,同时,用浮点数来记录带小数点的数字。


这里冒出来一个概念“浮点数”,嗯,你只要知道浮点数是用来记录小数的并且比普通的整数更占地儿就好了。

然后,计算机虽然笨,程序员也不傻,为了能够更加自由的进行小数的运算,早在C语言的年代,强制转换就出现了,详情自己看百度(http://baike.baidu.com/link?url= ... jP3oZZ4dJUCgNgtgWpK),套到这个问题上来说,整型变量除以整型变量,得到的是四舍五入的整型变量,浮点型变量除以整型变量,结果会自动升级为浮点型变量。

之后要做的事情就很简单了,既然你希望结果不再是0或者1这种整型变量而是0.222222222这种浮点型变量,那么你只要让式子中出现一个浮点型变量运送的结果就必然是不会四舍五入包含小数的浮点型。

比如,把整型的6写成浮点型6.0,

又比如,使用变量转换代码to_f,这边顺便回复一下4楼的点评 @david_ng223
hp_rate是Game_BattlerBase中定义的一个方法,代码如下
  1.   def hp_rate
  2.     @hp.to_f / mhp
  3.   end
复制代码
to_f的功能就是把一个变量的类型转换成浮点型

以上,便是详细的解释过程,写的又臭又长,不知道有多少人会去看……

点评

业界良心  发表于 2013-11-4 21:00
泪奔,我有说到点子上了啊,6改成6.0是我说的,只是疏忽了没注意他需要浮点型的地方是hp/mhp,10楼就补正了啊……泪奔  发表于 2013-11-4 15:32

评分

参与人数 1星屑 +250 梦石 +1 收起 理由
熊喵酱 + 250 + 1 .......不要這麼專業好不好.........

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 06:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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