resCorrected = resCorrected.setScale(0,RoundingMode.UP);
BigDecimal resPremiumed = resCorrected.multiply(premiumPercent);
resPremiumed = resPremiumed.setScale(0, RoundingMode.UP);
- return (resPremiumed.compareTo(BigDecimal.ZERO) == 0) || (resPremiumed == null) ? 0 : Integer.parseInt(resPremiumed.toString());
+ return (resPremiumed.compareTo(BigDecimal.ZERO) == 0) ? 0 : Integer.parseInt(resPremiumed.toString());
}
+ /**
+ * 計算式は
+ * 端数切り上げ(スコア*0.001*ルーム補正値*センター、ゲスト効果補正値*プロデュース方針補正値)
+ * ルーム、センター、ゲスト、プロデュース方針の補正値は百分率。計算時に自動で変換します
+ *
+ * @param score スコア
+ * @param room ルーム補正値
+ * @param center センターアイドル補正値
+ * @param produce プロデュース方針補正値
+ * @param premium プレミアムパス補正値
+ *
+ * @return 一人当たりの獲得ファン数がラップされているCompletableFuture
+ */
public static CompletableFuture<Integer> fanAsync(int score, int room, int center, int produce, int premium) {
return CompletableFuture.supplyAsync(() -> fan(score, room, center, produce, premium), async);
}
return TotalPRP;
}
+ /**
+ * 入力されたスコアからPRPを計算します。
+ * <p>
+ * PRPは「端数切捨て(スコア×0.001)」になります
+ * @param score 計算するスコア
+ * @return 入力から計算したPRP値
+ */
public static int calcPRPFromScore(int score) {
BigDecimal scoreDecimal = BigDecimal.valueOf(score);
- scoreDecimal.divide(THAUSAND, RoundingMode.DOWN);
- return scoreDecimal.intValueExact();
+ return scoreDecimal.divide(THAUSAND, RoundingMode.DOWN).intValueExact();
}
}