Jump to content
php.lv forumi

Problēmas ar apaļošanu (round())


andrisp

Recommended Posts

Šeit ir kods - http://paste.php.lv/3448

 

Tiek paņemts skaitlis 2.8 (0.028 * 100) un noapaļots ar fju round(2.8, 2), kas, protams, atgriež to pašu - 2.8, bet nez kāpēc vēlāk pie pārbaudes vai sākumvērtība ir vienāda ar beigu vērtību, tiek izpildīta tā koda daļa, kas paredzēta, ja šīs vērtības nav vienādas. Bet viņas ir ! Pat tipi ir vienādi.

 

Esmu pilnīgi un galīgi apjucis.

Palīdziet.

Link to comment
Share on other sites

Nu it kā jā, bet nevarētu teikt, ka problēma ir atrisināta.

 

Ā, un vēl, izmainām šādi, un viss iet:

<?
$cena100gb = custom_round(2.80, 2);
function custom_round($buu, $p=2) {
$y = 0;
if(is_numeric($buu)) {
	$y = round($buu, $p);
	if ($buu == $y) {
		return $buu;
	} else {
		return '<acronym title="'.$buu.'">~'.$y.'</acronym>';
	}
} else {
	return false;
}
}
echo $cena100gb;
?>

 

Nesaprotu :/

Edited by andrisp
Link to comment
Share on other sites

I ended up having to compare after multiplying by 10, rounding, and then dividing by 10... rediculous, but sadly the only way I could find to reliably do it. The round seemed to remove the break in the float...

 

Kas tad floatam nak par brake?

Link to comment
Share on other sites

×
×
  • Create New...