我目前正在爲我的公司製作支票打印解決方案。打印支票時,您需要從支付的金額中打印出數百萬,數十萬,數千,數千,數百,數十和單位(英鎊/美元/歐元等)。將數字細分爲數千,數百等
在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);
}
?>
你知道在php中,你可以簡單地在小數點分隔符處拆分數字,然後從最後一個位置(長度)到第一個(0)循環for循環?雖然我很欽佩你的精神,但我認爲這樣做的數學方式不會更快。 – konqi 2012-07-26 12:18:14