我有一个计算输入百分比的脚本。
$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
答案 0 :(得分:4)
使用error_reporting(-1)
,您将获得:
注意:在......
中遇到一个格式不正确的数值
表示$total_debt
存在问题。
解决方案:使用实数值,例如:
$total_debt = 16000;
// ...
参考:Integers,Floating 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();
?>