赞 | 287 |
VIP | 11 |
好人卡 | 74 |
积分 | 226 |
经验 | 281171 |
最后登录 | 2024-11-16 |
在线时间 | 9415 小时 |
Lv5.捕梦者 (暗夜天使) 只有笨蛋才会看到
- 梦石
- 1
- 星屑
- 21631
- 在线时间
- 9415 小时
- 注册时间
- 2012-6-19
- 帖子
- 7118
|
本帖最后由 喵呜喵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中定义的一个方法,代码如下- def hp_rate
- @hp.to_f / mhp
- end
复制代码 to_f的功能就是把一个变量的类型转换成浮点型
以上,便是详细的解释过程,写的又臭又长,不知道有多少人会去看…… |
评分
-
参与人数 1 | 星屑 +250 |
梦石 +1 |
收起
理由
|
熊喵酱
| + 250 |
+ 1 |
.......不要這麼專業好不好......... |
查看全部评分
|