处理PHP中的百分比

时间:2017-11-05 08:33:51

标签: php behat

我有一个百分比逻辑问题,我真的不明白如何处理它。让我与大家分享一下:

我接到一项任务,在某些时候我需要检查一些养老金收入(我认为它的价值)是否低于当前收入的70%。如果是这样,设置一个标志。都好。问题是我收到了一个测试应该如何的示例:

Given my income on my pension is <percentage>% of my current
Then the status should be <status>

Example:
|percentage| status |
|100       | true   |
|71        | true   |
|68        | false  |
|20        | false  |

我创建了一个找到这个百分比的函数,因为其他方式不知道如何获取它,只有在test中给出动态值:

public function findPensionIncomePercentageFromTheCurrent()
{
    $pensionIncome = $this->getPensionIncome();

    $totalCurrentIncome = $this->getTotalCurrentIncome();

    if ($pensionIncome !== 0 && $totalCurrentIncome !== 0) {
        $percentage =  (int) round(($pensionIncome/$totalCurrentIncome) * 100, 0);

        return $percentage;
    }

    return false;
}

好的,这是百分比。我还创建了另一个从当前收入中计算70%的函数。最后,我尝试将上述功能的百分比与养老金收入的70%进行比较。但我意识到,只有当我再次将百分比乘以当前收入时才会有效:

$currentIncome = $this->getTotalCurrentIncome();

$70percentageOfCurrentIncome = 70% * $currentIncome;

$result = $this->findPensionIncomePercentageFromTheCurrent() * $currentIncome;

if ($result < $70percentageOfCurrentIncome)
    $this->setTrue(true);
else {
    $this->setFalse(false);

你认为我做得怎么样?我问,因为我发现有点奇怪的是通过a/b * 100找到百分比,然后再用b再次乘以该百分比以获得结果。我觉得我做得不好。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

确切地说,技术百分比是一个对应于一个比例的数字。

因此,如果您的收入为1000且养老金为300,那么养老金与收入的比例在数字方面 0.3 而不是30%。

这是你应该做的:

public function findPensionIncomePercentageFromTheCurrent()
{
    $pensionIncome = $this->getPensionIncome();

    $totalCurrentIncome = $this->getTotalCurrentIncome();

    if ($pensionIncome !== 0 && $totalCurrentIncome !== 0) {
        $percentage =  ($pensionIncome/$totalCurrentIncome);

        return $percentage;
    }

    return false;
}

那将是一个问题:

 $currentIncome = $this->getTotalCurrentIncome();

 //0.7 is the real percentage value, 
 //70% is just something people use because we like whole numbers more
 $threshold = 0.7 * $currentIncome; 

 $result = $this->findPensionIncomePercentageFromTheCurrent() * $currentIncome;

 if ($result < $threshold)
   $this->setTrue(true);
 else {
   $this->setFalse(false);

现在需要注意的是,如果您需要向需要执行以下操作的人员显示百分比:

echo round($percentage*100). "%"; //Would print something like 70%