---
title: "Decimalfel"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/150363-decimalfel"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "jonelo"
published: "2006-08-21T05:37:32.000Z"
updated: "2007-08-23T10:09:56.000Z"
replies: 4
views: 578
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/150363-decimalfel"
---

# Decimalfel

## #1 — jonelo, 2006-08-21T05:37Z

Har ett mysko problem. Koden nedan resulterar i att variabeln $new blir 0.70999999999999 när den egentligen borde bli 0.71. Vad kan det vara som är fel? Sjukt irriterande. Blir så både lokalt på min testburk och på servern.

```php
<?php

$price = 100.71;
$new = $price - 100;

echo $new;

?>
```

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

## #2 — Croolie, 2006-08-21T05:52Z

Det du kan göra är att använda funktionen [round()](http://se.php.net/manual/en/function.round.php) där den andra parametern anger hur många decimalers noggrannhet svaret ska ha.

```
<?php

$price = 100.71;
$new = round($price - 100.00, 2);

echo $new;

?>
```

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

## #3 — jonelo, 2006-08-21T05:58Z

Jo men man tycker att detta inte ska behöva rundas då utgångssumman bara har två decimaler och resultatet kort och gott blir en summa med två decimaler.

Det går ju att göra tvärt om utan problem. Dvs denna kod fungerar ju som den bör utan rundning:

```php
<?php

$price = 100;
$new = $price + 0.71;

echo $new;

?>
```

Summan där blir ju 100.71 utan att man behöver runda något.

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

## #4 — jonelo, 2006-08-21T06:45Z

Då har jag letat vidare på nätet och fått felet bekräftat och dessutom förklarat. Är någon intresserad? Se följande:
<http://bugs.php.net/bug.php?id=8164>
<http://bugs.php.net/bug.php?id=9692>

Lösningen är då alltså att köra round(), precis som du säger Croolie.

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

## #5 — MickeA.com, 2007-08-23T10:09Z

Tjena
Nu har jag lite problem med decimaler.
Mina talvärden hämtar jag via XML, måste jag då konvertera dessa till tal?

```php
$sumbrake	= 0;
foreach($xml->mypayouts->payout as $payout){
	$row_class = ($row_class == "row-even") ? "row-odd" : "row-even";
	print("<tr class=\"" . $row_class . "\">\n"
		 ."<td class=\"table-content\">" . $payout->brake . "</td>\n"
		 ."</tr>\n");
	$sumbrake += $payout->brake;
}
print($sumbrake);
```

Ovanstående kod skriver ut ett heltal som summa, trots att varje "rad" i loopen är ett decimaltal, då det är många rader, så blir det en stor diff i totalfältet.

Måste jag deklarera $payout-\>brake som tal och hur gör jag isf. det?
Jag vill visa varje rad samt det totala med två decimaler.

Tack!

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

---

Tråden på webben: https://www.webforum.nu/amne/php/150363-decimalfel
