PHP计算 - 输入的百分比

时间:2018-03-21 10:01:13

标签: php

我有一个计算输入百分比的脚本。

$total_debt = "16,000";
$debt_written_off_percentage = 70;
$debt_written_off = ($debt_written_off_percentage / 100) * $total_debt;

$reduced_debt_percentage = 30;
$reduced_debt = ($reduced_debt_percentage / 100) * $total_debt;

echo $total_debt;
echo '<br>';
echo $debt_written_off;
echo '<br>';
echo $reduced_debt;
echo '<br>';
exit();

当我运行此脚本时,我得到以下输出:

16,000
11.2
4.8

为什么不是:

16,000
11,200
4,800

3 个答案:

答案 0 :(得分:4)

使用error_reporting(-1),您将获得:

  

注意:在......

中遇到一个格式不正确的数值

表示$total_debt存在问题。

解决方案:使用实数值,例如:

$total_debt = 16000;
// ...

参考:IntegersFloating point numbers以及它的价值Type Juggling

答案 1 :(得分:1)

因为您的$total_debt = "16,000";是一个字符串,并且在使用时,它将被转换为int删除逗号。所以使用

$total_debt = 16000;

您必须格式化输出以满足您的需求:

function number_format ($number , $decimals = 0 , $dec_point = '.' , $thousands_sep = ',' ) {}

所以你应该替换为:

echo number_format($total_debt, 3, ",");
echo '<br>';
echo number_format($debt_written_off, 3, ",");
echo '<br>';
echo number_format($reduced_debt, 3, ",");
echo '<br>';
exit();

答案 2 :(得分:1)

首先将您的total_debt 字符串转换为整数,然后您可以尝试自己的逻辑。

 <?php

    $total_debt = (int)16000;
    $debt_written_off_percentage = 70;
    $debt_written_off = ($debt_written_off_percentage / 100) * $total_debt;

    $reduced_debt_percentage = 30;
    $reduced_debt = ($reduced_debt_percentage / 100) * $total_debt;

    echo $total_debt;
    echo '<br>';
    echo $debt_written_off;
    echo '<br>';
    echo $reduced_debt;
    echo '<br>';
    exit();

  ?>