-2

对于发票,我想确定我的总金额是否有不必要的一分钱。例如 5.01 美元或 5.51 美元。如果它检测到美分,那么我运行一个 if 语句来删除美分:负 0.01 例如。更改30.510.01发出警告信息

并且
30.51还要0.51

并且
30.51还要1

两者都来自 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;
4

2 回答 2

1

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

你可以做一个爆炸:

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

现在你可以根据你的逻辑做你需要的事情了。

您也可以使用 asubstr()找到小数点的位置(总是从右边三个位置?),然后获取子字符串。

不确定哪个会更有效。

于 2013-02-02T14:12:10.953 回答
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
于 2013-02-02T14:23:54.680 回答