Portál AbcLinuxu, 10. prosince 2025 02:41
Hezký den,
mám jednoduchý vzorec:
$rozdil = $skutecnaspotreba - $spotrebacn;
V jednom jediným případu mi rozdíl vychází takto:
0.0999999998 = 12.1 - 12.00
ale pokud udělám vzorec takto:
$rozdil = "$skutecnaspotreba" - "$spotrebacn";
je vše v pořádku:
0.1 = 12.1 - 12.00
V čem jsou tak důležité ty uvozovky? U jiných řádku v DB mi toto nedělá.
jasně, jedno číslo je z DB druhé se vypočítává a i když dám vypsat obě čísla před odečítáním, jsou v cajku, tedy 12.00 a 12.1. To nezaokrouhlené číslo mi nevadí, spíš mě to jen překvapuje. Díky za odpověď
double.
float či double (plovoucí řádová čárka, nepřesná čísla) versus decimal či numeric (pevný počet desetinných míst, přesná čísla).
ano, DB mám nastaveno decimal a jede se na dvě desetinný místa, proto nechápu, že to nespočítá přesně.
float nebo double.
'select `skutecnaspotreba`,`spotrebacn` from `t1`;'$row = mysqli_fetch_row($rs);echo $row['skutecnaspotreba'] - $row['spotrebacn '];$spotrebacn=MySQL_Result($vysledek, $i,"spotrebacn"); $faktura=MySQL_Result($vysledek, $i,"faktura"); $dobropis=MySQL_Result($vysledek, $i,"dobropis"); $skutecnaspotreba = $faktura - $dobropis; $rozdil = $skutecnaspotreba - $spotrebacn;takhle to mám, vcelku mi nevadí, že mi nevyjde přesné číslo, jen se divím proč.
decimal či numeric např. DECIMAL(8,2), a máte tam hodnoty faktura=12.10, dobropis=0.00 a spotrebacn=12.00, měl by být výsledek v PHP 0.1 .(`faktura` - `dobropis` - `spotrebacn`) AS rozdil a máte to na jistotu z jednoho zdroje :), nicméně čísla pro výstup by se měla formátovat, třeba pomocí number_format(), případně (s)printf().
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.