我目前正在为我的公司制定支票打印解决方案。打印支票时,您需要从支付的金额中打印出百万、十万、万、千、百、十和单位(英镑/美元/欧元等)。
在 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);
}
?>