Portál AbcLinuxu, 8. května 2024 13:56
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.