-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

これで、ロジックに基づいて必要なことを実行できます。

substr()また、小数点を見つけた場所(常に右から3桁ですか?)を使用して、部分文字列を取得することもできます。

どちらがより効率的かわからない。

于 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 に答える