我有两个非负多头。它们可能很大,接近 Long.MAX_VALUE。我想从这两个数字中计算一个百分比。
通常我会这样做:
long numerator = Long.MAX_VALUE / 3 * 2;
long denominator = Long.MAX_VALUE;
int percentage = (int) (numerator * 100 / denominator);
System.out.println("percentage = " + percentage);
如果分子在 Long.MAX_VALUE 的两个数量级内,则这是不正确的。
什么是正确、简单和快速的方法?