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.