网站流量 转化率,网站制作公司资质,51个人网站怎么打开,国际贸易网址今天在写代码的时候#xff0c;遇到了纹饰评分的计算#xff0c;纹饰的等级和评分的关系为#xff1a;
1级纹饰#xff1a;202级纹饰#xff1a;403级纹饰#xff1a;80
得出纹饰等级grade和纹饰评分score的关系#xff1a;score (2 ^ grade) * 10#xff0c;所以就…今天在写代码的时候遇到了纹饰评分的计算纹饰的等级和评分的关系为
1级纹饰202级纹饰403级纹饰80
得出纹饰等级grade和纹饰评分score的关系score (2 ^ grade) * 10所以就遇到了要求2的N次方的问题。
我的第一反应是java.util.Math有一个pow(a, b)方法就是求a ^ b但是由于很少用这个方法居然参数是float类型的。不知道java的作者为什么偷懒不写几个重载的pow()方法
于是只能另寻他法了于是在百度的时候我突然想起了位运算2是特殊的数字一个数字要扩大2^N呗只需要左移N位。
2 1 42 2 82 3 16......
所以上面的公式score (2 ^ grade) * 10可以用java代码实现
int score (2 (grade - 1)) * 10;
当然为了减少一次减法运算可以再次简化公式
int score (1 grade) * 10; 具体的业务代码为
/** 2、纹饰评分*/
// 统御状态为1-统御中
if (TongyuState.YTY.getValue().equals(chongwu.getTyStatus())) {// 根据坐骑ID查询纹饰类型列表ListWenshiCategory list wenshiMapper.selectByZuoqiId(chongwu.getZuoqiId());if (list.size() 0) {// 遍历纹饰类型列表for (WenshiCategory wenshiCategory : list) {// 纹饰的评分 2^纹饰等级 * 10score.addAndGet((1 wenshiCategory.getGrade()) * 10);}}
}
好了文章就分享到这里了看完如果觉得对你有所帮助不要忘了点赞收藏哦~