PHP检测并删除不必要的价格

时间:2013-02-02 13:57:15

标签: php

对于发票,我想确定我的总金额是否有不必要的分数。例如5.01美元或5.51美元。如果它检测到分然后我运行if语句去除分:减0.01 例如。 将30.51更改为0.01并发出警告消息

并且还有 30.510.51

并且还有 30.511

两者都来自POST,因此它们都是 PHP字符串

但不用担心 - 由于dmayo

,我现在让它工作了
$pieces = explode(".", $TotalAmt);
echo "<br>p1:".$pieces[1]; // piece2
$p1 = $pieces[1];
$spl1 = str_split($p1);
$TAmttmp = 0; 
//echo "<br>sp11:".$spl1; // error convert array to string
$TAmttmp = $spl1[0];
echo "<br>TAmttmp: with useless cent".$TAmttmp;
echo "<br>IT:".$IT;
if ($TAmttmp == 0.01) //so if there is 1 cent subtract the useless cent.
$TAmt = $TAmt - 0.01;
echo "<br>TAmt: with useless cent".$TAmt;
echo "<br>TAmt: without useless cent".$TAmt;

2 个答案:

答案 0 :(得分:1)

@Gumbo是对的,我们需要了解您的转化背后的逻辑,以提供准确的答案。

你可以爆炸:

$var = explode('.',$_POST['val']);
$digits = $var[1]; // this will give you the digits after the decimal point

现在,您可以根据自己的逻辑做所需的事情。

您也可以使用substr()找到小数点(它是否总是从右边三个位置?)然后抓住子串。

不确定哪种效率更高。

答案 1 :(得分:1)

我不知道你想要什么,但也许这会有所帮助:

$nr = "30.51";

echo round($nr - floor($nr), 2); // 0.51    
echo round(($nr * 10 - floor($nr * 10)) / 10, 2); // 0.01    
echo round(($nr * 10 - floor($nr * 10)) * 10); // 1