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