我有以下代码行。
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()已经处于浮动状态,但是否具有重要意义?