我有一个类,该类具有根据加权分数组件计算总百分比分数的功能。我希望该类尽可能节省内存并优化计算,因为我将创建大量实例并且有很多分数组件,所以我想避免存储 float 类型并在以下情况下使用 float 操作可能。
我将分数分量值和权重存储为 uint8 类型,然后在计算前将它们转换为浮点数,但我能以某种方式仅使用整数运算来完成整个计算吗?
使用浮点数的数学是这样的:
// Object Properties
// ---------------------------
// score component values from 0-10
uint8 Speed = 9;
uint8 Security = 4;
// score component weights adding up to 100
uint8 WeightSpeed = 70;
uint8 WeightSecurity = 30;
// Function
// ----------------------------
// convert score components to fractions
float speedFraction = Speed / 10.f;
float securityFraction = Security / 10.f;
// convert weights to fractions
float weightSpeedFraction = WeightSpeed / 100.f;
float weightSecurityFraction = WeightSecurity / 100.f;
// compute weighted score components
float weightedSpeedScore = speedFraction * weightSpeedFraction;
float weightedSecurityScore = securityFraction * weightSecurityFraction;
uint8 finalScore = (weightedSpeedScore + weightedSecurityScore) * 100;
为了清楚起见,我将计算分成多行。