Bundar ke 5 sen terhampir cara Malaysia
Posted On 28/02/2009
Sejak Malaysia tidak lagi mengeluarkan syiling 1sen, segala sistem pembayaran yang telah digunakan terpaksa diubahsuai agar nilai sen 1,2 dibundarkan menjadi 0. Nilai sen 3,4,6 dan 7 pula dibundarkan menjadi 5sen manakala 7,8 pula akan menjadi 10sen. Isu ini telahpun dibincangkan di forum http://php.net.my .
Berikut adalah cara penyelesaian yang aku cadangkan
<?php
$nilai = 12.91;
function roundRM($nilai)
{
$round = array('1' => '0',
'2' => '0',
'3' => '5',
'4' => '5',
'5' => '5' ,
'6' => '5' ,
'7' =>'5',
'8' => '0',
'9' => '0' );
$splitNilai = explode('.',$nilai);
$splitCent = str_split($splitNilai[1],'1');
$centBack = $splitCent[1];
if($centBack > 7)
{
$nilaiAll = $splitNilai[0].'.'.$splitCent[0];
$nilaiAll = number_format($nilaiAll + 0.1,1);
$nilaiAll = $nilaiAll . $round[$centBack];
}
else
{
$nilaiAll = $splitNilai[0].'.'.$splitCent[0]. $round[$centBack];
}
return $nilaiAll;
}
echo roundRM($nilai);
?>
Dan penyelesaian yang lebih mudah ini dicadangkan oleh doubt di forum yang sama.
<?php
function round5Sen ($value) {
return number_format(round($value*20,0)/20,2,'.','');
}
echo round5Sen(155.13);
echo "\n";
echo round5Sen(155.12);
echo "\n";
echo round5Sen(155.0);
echo "\n";
echo round5Sen(155.18);
echo "\n";
?>
Jadi pilihlah cara yang mana yang kamu rasa sesuai untuk diri kamu.