我有以下代码行。
hero->onBeingHit(ENEMY_ATTACK_POINT * (1.0 - hero->getDefensePercent()));
void onBeingHit(int decHP)
方法接受整数并更新健康点。float getDefensePercent()
方法是返回英雄防御百分比的getter方法。ENEMY_ATTACK_POINT
是一个宏常数因子,定义为#define ENEMY_ATTACK_POINT 20
。
假设hero->getDefensePercent()
返回0.1
。所以计算是
20 * (1.0 - 0.1) = 20 * (0.9) = 18
每当我尝试使用以下代码时(不f
附加1.0
)
hero->onBeingHit(ENEMY_ATTACK_POINT * (1.0 - hero->getDefensePercent()));
我得到了17。
但是对于以下代码(f
附加在之后1.0
)
hero->onBeingHit(ENEMY_ATTACK_POINT * (1.0f - hero->getDefensePercent()));
我得到了18。
这是怎么回事?f
尽管hero->getDefensePercent()
已经处于浮动状态,但是否具有重要意义?