纽布在这里。
我试图构建一个表单,该表单将接收两个金额,然后根据用户输入的数据返回一组简单的计算(子税额,小计金额,总数等等。
我试图构建一个函数并将其数量调整到最接近的便士数量,但它没有按预期工作。它似乎是它的'我认为最接近的100美元大关。我用谷歌搜索了一下,读了一些堆栈,当我尝试我认为简单的练习时,我变得越来越困惑。
指导帮助表示赞赏
我的代码:
<?php //0102e_taxes-01.php
//Constant never changes, 100% available everywhere- almost always simple datatypes (T or F, num, string)
//define('THIS_PAGE', $_SERVER['PHP_SELF']);//shows webroot
define('THIS_PAGE', basename($_SERVER['PHP_SELF']));//shows app root - gets name of the file basically
define('TAX_RATE', .095); //current tax rate us => .095 => is 9.5%
//echo THIS_PAGE;// shows this pagefile
//VAR_DUMP - we love it cause we can see everything
function roundNearestHundredUp($number) {
return ceil( $number / 100 ) * 100;
}
if (isset($_POST['submit'])) {//if data, do processing
$purchase01 = (float) $_POST['purchase01'];//float before floats data after
$purchase02 = (float) $_POST['purchase02'];//float before floats data after
$subtotal = $purchase01 + $purchase02;
$amountTotal = TAX_RATE * $amountBeforeTax;
$amountTax = $amountTotal - $subtotal;
echo "<br /><br />";
echo 'First Purchase: $' . $purchase01 . '<br />';//standard
echo 'First Purchase: $' . $purchase02 . '<br />';//standard
echo '<hr />';
echo 'subtotal before tax: $' . roundNearestHundredUp($subtotal) . '<br />';//standard
echo '<hr />';
echo 'Washington state tax: %' . TAX_RATE . '<br />';
echo '<hr />';
echo 'your purchase amount is $' . roundNearestHundredUp($amountTotal) . '<br />';//risky double dollar sign
}else{//show Output
echo
'
<form method="post" action="004_form-taxes.php">
Enter Purchase Amount:
<input type="text" name="purchase01" />
<br />
Enter Purchase Amount:
<input type="text" name="purchase02" />
<br />
<input type="submit" name="submit" />
</form>
';
}//if you dont' need else, do a 'print and die statement' so if else happens you know else happened.
?>
答案 0 :(得分:5)
查找这三个功能以供参考:
如果你只想围捕,ceil有点难以使用,你将不得不破解它
$ amount = 14.754
轮将使其成为14.75 ceil会让它变成15,你会失去便士,但你这样称呼它 - 易于使用黑客echo ceil($amount*100)/100;
+++以后编辑+++
为了更好的做事方式,你可以稍微玩一下:
echo round(ceil(amount*1000)/1000,2);
答案 1 :(得分:2)
ceil()函数的意思是“天花板”。因此它总是给出最接近的int> $数。
我建议你改用round()。
答案 2 :(得分:1)
(float)
ceil($number)
或round($number)
答案 3 :(得分:1)
首先,除以100和舍入/上限到下一个整数将舍入到100美元,而不是美分!原价是137.8234美元。除以100:1.378234。圆形或天花板:1或2.乘以100:$ 100.00或$ 200.00。你想先乘以 100得到分:$ 137.8234 =&gt; 13783.4。回合或上限:13783或13784.除以100:$ 137.83或$ 137.84。
如何 round 本身就是一个完整的研究课题。最简单的方法是始终将镍(5)向上舍入,但这会产生偏差。您可以将(5)一致地舍入到最接近的偶数(或奇数)数,以减少结果的偏差。无论如何,你通常不想使用ceiling(),因为这会引入很大的偏见。