Vill du även visa de två sista decimalerna, även om det är ett heltal?
$str = "123";
$val = strval(round(str_replace('.', ',', $str), 2));
if(strpos($val, '.') === false) {
$val .= '.00';
}
echo $val;
9 svar · 896 visningar · startad av Maacus
Har en funktion som avrundar ett värde till 2 decimaler och om talet inte har två decimaler så lägger jag till nollor efter. Men jag känner att min lösning inte är den bästa.
För när talet blir mer än 2 tecken framför kommatecknet så funkar inte min kod längre. Är värdet 100.60 så tar "round" bort nollan.
$fund = round($rad['rate'],2);
if( strlen($fund) == 2){
$fund .= ".00";
}
if( strlen($fund) == 4){
$fund .= "0";
}
Vill du även visa de två sista decimalerna, även om det är ett heltal?
$str = "123";
$val = strval(round(str_replace('.', ',', $str), 2));
if(strpos($val, '.') === false) {
$val .= '.00';
}
echo $val;
Använd funktionen number_format() istället för round och slopa dina if satser.
$fund = number_format($rad['rate'],2);
Oh, mycket snyggare. :)
Glömde skriva att man måste konverta till float innan man använder number_format()
$myFloat = (float)$rad['rate'];
$fund = number_format($myFloat,2);
echo $fund;
/red
Har för mig att det funkar, men testa först för säkerhets skull.
Grymt!
Visste att de jag gjort inte var så bra. :)
Testade nu och upptäckte att konverteringen till float tog bort decimalerna så det alltid blev .00 på slutet.
Använd något sånt här istället:
$myFloat = str_replace(',','.',$rad['rate']);
$fund = number_format($myFloat,2,',','');
Du får även justera så du får nummerformateringen som du vill ha den.
t.ex
55112,22
eller
55 112.22
eller
55,112.22
Om du hämtar värdet från en databas kan du annars skriva
SELECT format(dittvärde,2) from ...
/Alan
Jobbigt.se
Pedda skrev:
Glömde skriva att man måste konverta till float innan man använder number_format()
$myFloat = (float)$rad['rate']; $fund = number_format($myFloat,2); echo $fund;
Det går alldeles utmärkt att skicka in både int och string till number_format, en av fördelarna med phps lösa typing.