joneloMedlem sedan feb. 200622 inlägg 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
$price = 100.71;
$new = $price - 100;
echo $new;
?>
CroolieMedlem sedan dec. 200435 inlägg Det du kan göra är att använda funktionen round() 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;
?>
joneloMedlem sedan feb. 200622 inlägg 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
$price = 100;
$new = $price + 0.71;
echo $new;
?>
Summan där blir ju 100.71 utan att man behöver runda något.
joneloMedlem sedan feb. 200622 inlägg 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.
Tjena
Nu har jag lite problem med decimaler.
Mina talvärden hämtar jag via XML, måste jag då konvertera dessa till tal?
$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!