Dělení desetinných čísel v PHP
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- maslo
- Člen | 6
Ahoj,
je to sice mimo Nette, ale nějak mi to neleze do hlavy, tak kdybyste někdo
věděl, proč se to stalo, budu vděčný :-)
měl jsem kód:
<?php
$delc = 100*$item->ourPrice;
$delt = 100*$item->originalPrice;
$pod = $delc/$delt;
$disc = 100 - $pod;
if ($disc == 100) {
echo "$delc/$delt = $pod -> $disc % sleva \n"; //vypíše 0/1000 = 0 -> 100 % sleva
echo "$item->ourPrice"; //vypíše 0.99
}
//samozřejmě je to po značných úpravách, kde jsem se snažil najít chybu, jinak jsem to měl ve 2 řádcích..
?>
Jistě jste zaregistrovali, na co narážím, když jsem dělil desetinné číslo, tak se prostě zaokrouhlilo dolů, většinou na 0 (možná i na jiná čísla, ale pozoroval jsem chování jen u 100% slev…).
Podařilo se mi to vyřešit až tím, že jsem dělil stringem (protože
když jsem toho dělence vypisoval, tak se vypsal správně).
EDIT: Nepodařilo se mi to vyřešit vůbec, furt si to počítá jak
chce :-/
JAK JE TO MOŽNÉ?
<?php
$delc = 100*"$item->ourPrice";
$delt = 100*"$item->originalPrice";
$pod = $delc/$delt;
$disc = 100 - $pod;
if ($disc == 100) {
echo "$delc/$delt = $pod -> $disc% sleva \n";
echo "$item->ourPrice";
}
?>
Předem děkuji pokud někdo máte nějaké vysvětlení, případně radu jak to udělat elegantněji, ten string se mi tam taky nelíbí..
Editoval maslo (22. 11. 2012 22:25)