PHP计算 - 输入的百分比

I have a script that calculates the percentage of an input.

$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();

When I run this script, I get the following output:

16,000
11.2
4.8

Why is it not:

16,000
11,200
4,800

With error_reporting(-1), you'll get:

Notice: A non well formed numeric value encountered in ...

indicating that $total_debt is problematic.


Solution: Use a real number value, e.g.:

$total_debt = 16000;
// ...

Reference: Integers, Floating point numbers and for what it's worth Type Juggling.

Because your $total_debt = "16,000"; is a string and when used it will be cast to int removing the comma. So use

$total_debt = 16000;

You have to format your output in order to fit your needs with:

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

So you should replace with:

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();

Covert your total_debt string to integer first and then you can try your logic.

 <?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();

  ?>