私は現在、会社の小切手印刷ソリューションをまとめています。小切手を印刷するときは、支払った金額から数百万、数十万、数万、数千、数百、数十、および単位(ポンド/ドル/ユーロなど)を印刷する必要があります。
111232.23の場合、以下に記述したコードから次のように正しく出力されます。これを行うためのより効率的または信頼性の高い方法があると感じずにはいられませんか?これを行うライブラリ/クラスの数学のテクニックを知っている人はいますか?
float(111232.23)
Array
(
[100000] => 1
[10000] => 1
[1000] => 1
[100] => 2
[10] => 3
[1] => 2
)
<?php
$amounts = array(111232.23,4334.25,123.24,3.99);
function cheque_format($amount)
{
var_dump($amount);
#no need for millions
$levels = array(100000,10000,1000,100,10,1);
do{
$current_level = current($levels);
$modulo = $amount % $current_level;
$results[$current_level] = $div = number_format(floor($amount) / $current_level,0);
if($div)
{
$amount -= $current_level * $div;
}
}while($modulo && next($levels));
print_r($results);
}
foreach($amounts as $amount)
{
cheque_format($amount);
}
?>