涉及数学的方法给出的答案与计算器不同

问题描述 投票:1回答:2

我是Java的新手,请多多包涵。我正在尝试从游戏总数中获取获胜百分比,而我正在做的事情还很遥远。我的获取百分比的方法如下:

public double winPercentage(int wins, int total)
{
    return (wins % total) * 1.00;
}

[如果我赢了254个游戏中的52场,我的答案将是52.0,使用我的计算器,假设获胜/总数* 100,相同的答案是20.47。如果我将模数切换为/我会不断得到0.0

我尝试了不同小数位和操作顺序的变体。我似乎无法使计算器和方法相匹配。

java math percentage division integer-division
2个回答
5
投票

wins % total中的百分号与计算百分比无关。

要计算Java中的百分比,您可以编写

return 100.0 * wins / total;

[这里,100.0具有双重作用:

  • 它将结果缩放到百分比;
  • 它将随后的除法转换为浮点数(没有除法器,它是一个integer除法,当wins < total时始终返回零)。

1
投票
  1. Java使用%作为模运算符,因此它将始终返回余数而不是百分比。
  2. 如果将整数除以整数,则结果将不符合百分比函数所要求的精确度。例如。如果我们尝试将52除以254,那么对于不是0.2047的整数,结果将为0,因为整数只能保存整数。因此,要获取百分比,可以将double / float用作如下所示的参数数据类型,而不是整数。
public double winPercentage(double wins, double total) {
     return wins / total * 100;
  }
© www.soinside.com 2019 - 2024. All rights reserved.