---
title: "Avrunda med 2 deicmaler"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/171343-avrunda-med-2-deicmaler"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Maacus"
published: "2008-05-09T08:39:03.000Z"
updated: "2008-05-18T09:12:09.000Z"
replies: 9
views: 908
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/171343-avrunda-med-2-deicmaler"
---

# Avrunda med 2 deicmaler

## #1 — Maacus, 2008-05-09T08:39Z

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.

```php
		
$fund = round($rad['rate'],2);
if( strlen($fund) == 2){
	$fund .= ".00";			
}
if( strlen($fund) == 4){
	$fund .= "0";			
}
```

Permalänk: https://www.webforum.nu/p/171343

## #2 — SPiN, 2008-05-09T09:00Z

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;
```

Permalänk: https://www.webforum.nu/p/2109001

## #3 — Pedda, 2008-05-09T09:00Z

Använd funktionen number_format() istället för round och slopa dina if satser.

```php
$fund = number_format($rad['rate'],2);
```

Permalänk: https://www.webforum.nu/p/2109002

## #4 — SPiN, 2008-05-09T09:02Z

Oh, mycket snyggare. :)

Permalänk: https://www.webforum.nu/p/2109003

## #5 — Pedda, 2008-05-09T09:10Z

Glömde skriva att man måste konverta till float innan man använder number_format()

```php
$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.

Permalänk: https://www.webforum.nu/p/2109008

## #6 — Maacus, 2008-05-09T09:16Z

Grymt!
Visste att de jag gjort inte var så bra.   :)

Permalänk: https://www.webforum.nu/p/2109010

## #7 — Pedda, 2008-05-09T09:20Z

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:

```php
$myFloat = str_replace(',','.',$rad['rate']);
$fund = number_format($myFloat,2,',','');
```

Permalänk: https://www.webforum.nu/p/2109013

## #8 — Pedda, 2008-05-09T09:33Z

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

Permalänk: https://www.webforum.nu/p/2109021

## #9 — tha_neo, 2008-05-17T23:33Z

Om du hämtar värdet från en databas kan du annars skriva 
SELECT format(dittvärde,2) from ...

/Alan
[Jobbigt.se](http://www.jobbigt.se)

Permalänk: https://www.webforum.nu/p/2110926

## #10 — effata, 2008-05-18T09:12Z

> **Pedda skrev:**
>
> Glömde skriva att man måste konverta till float innan man använder number_format()
>
>
> ```php
> $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.

Permalänk: https://www.webforum.nu/p/2110941

---

Tråden på webben: https://www.webforum.nu/amne/php/171343-avrunda-med-2-deicmaler
