Kezdőlap › Fórumok › Programozás › PHP – képletszámítás, 1-1 néha nem nulla ?
- This topic has 28 hozzászólás, 5 résztvevő, and was last updated 16 years, 11 months telt el by
gabaman.
-
SzerzőBejegyzés
-
2008-07-23-13:29 #2168201
Számomra logikusabb lenne a KOR -nagyobb- 19 vizsgálat.
Vagy ilyen luxus nincs ebben a nyelvben? (Assembly tudja)Az osztok-szorzok műveletnek mindenféle csonkolásai meg maradékai vannak.
2008-07-23-13:29 #2168202Számomra logikusabb lenne a KOR -nagyobb- 19 vizsgálat.
Vagy ilyen luxus nincs ebben a nyelvben? (Assembly tudja)Az osztok-szorzok műveletnek mindenféle csonkolásai meg maradékai vannak.
2008-07-23-13:56 #2168203kisbetu wrote:Számomra logikusabb lenne a KOR -nagyobb- 19 vizsgálat.
Vagy ilyen luxus nincs ebben a nyelvben? (Assembly tudja)Az osztok-szorzok műveletnek mindenféle csonkolásai meg maradékai vannak.
Ok. Igaz kisbetü amit írtál, de számomra amit a php a fenti dologra
produkál nagyon nagyon meglepő.
Nem tud a php számolni ? Ugyan is ha a ‘-1’ előtti számítási eredményt
berakom egy változóba és abból levonok 1-et, vagy ‘–‘ operatorral
dekrementálom akkor is marhaságot ad ki.
Sőt, ha a nyilvánvalóan integer típusba sorolható rész-eredményeket
settype() -al integer típusúvá „erőltetem” akkor szintén
értelmetlen eredmény lesz.
Azaz, nem az a fő probléma hogy megoldhatom pl ‘ if ‘ -el, hanem az,
hogy egy gagyi kis képletet kiszámítva értelmetlen eredményt kapok.
Teszem azt, ha adott egy kiszámítandó képlet
(ami feltétell-vizsgálattal nem váltható ki) katasztrófális eredmények
jöhetnek ki.
Ezt szeretném kiküszöbölni, azaz nem szeretnék hasonló ‘eset’
miatt egy bonyolultabb php-script írásakor érthetetlen jelenségekbe
botlani.
Mivel a „kor” értékét a form elküldése után a $_POST -ból
kapja(ami string), azt is megpróbáltam hogy egész típusú változóba
teszem át, de ez nem változtat az anomálián.
Másra nem tudok gondolni, hogy talán a php.ini állományban kellene
valamit módosítanom — már ha egyáltalán ennek ehhez köze van — ?2008-07-23-13:56 #2168204kisbetu wrote:Számomra logikusabb lenne a KOR -nagyobb- 19 vizsgálat.
Vagy ilyen luxus nincs ebben a nyelvben? (Assembly tudja)Az osztok-szorzok műveletnek mindenféle csonkolásai meg maradékai vannak.
Ok. Igaz kisbetü amit írtál, de számomra amit a php a fenti dologra
produkál nagyon nagyon meglepő.
Nem tud a php számolni ? Ugyan is ha a ‘-1’ előtti számítási eredményt
berakom egy változóba és abból levonok 1-et, vagy ‘–‘ operatorral
dekrementálom akkor is marhaságot ad ki.
Sőt, ha a nyilvánvalóan integer típusba sorolható rész-eredményeket
settype() -al integer típusúvá „erőltetem” akkor szintén
értelmetlen eredmény lesz.
Azaz, nem az a fő probléma hogy megoldhatom pl ‘ if ‘ -el, hanem az,
hogy egy gagyi kis képletet kiszámítva értelmetlen eredményt kapok.
Teszem azt, ha adott egy kiszámítandó képlet
(ami feltétell-vizsgálattal nem váltható ki) katasztrófális eredmények
jöhetnek ki.
Ezt szeretném kiküszöbölni, azaz nem szeretnék hasonló ‘eset’
miatt egy bonyolultabb php-script írásakor érthetetlen jelenségekbe
botlani.
Mivel a „kor” értékét a form elküldése után a $_POST -ból
kapja(ami string), azt is megpróbáltam hogy egész típusú változóba
teszem át, de ez nem változtat az anomálián.
Másra nem tudok gondolni, hogy talán a php.ini állományban kellene
valamit módosítanom — már ha egyáltalán ennek ehhez köze van — ?2008-07-23-14:02 #2168205„a józan ész és az elemi iskola matematika szabályai alapján 0,
azaz nullának kell(ene) lennie. PHP-ban ez nem így történt”Van ez így, amikor egy hozzá nem értő áll neki programozni. Ezt az is bizonyítja, hogy a probléma okát már fent leírtad, csak nem vetted észre hogy majdnem teljesen válaszoltál magadnak.
$kor % 10 : 9 => egész típus
($kor % 10)/10 : 0.9 => lebegőpontos típusMivel a PHP automatikusan választja ki az éppen használatos típust. Vedd hozzá még azt a tényt, hogy a számítógép nem tízes, hanem kettes számrendszerben dolgozik, és már meg is kaptad hogy természetesen nem nulla a végeredmény.
Mellesleg ez miért nem jó?
Code:if ($kor < 20) {
$korhatar = 0;
}
else {
$korhatar = 1;
}2008-07-23-14:02 #2168206„a józan ész és az elemi iskola matematika szabályai alapján 0,
azaz nullának kell(ene) lennie. PHP-ban ez nem így történt”Van ez így, amikor egy hozzá nem értő áll neki programozni. Ezt az is bizonyítja, hogy a probléma okát már fent leírtad, csak nem vetted észre hogy majdnem teljesen válaszoltál magadnak.
$kor % 10 : 9 => egész típus
($kor % 10)/10 : 0.9 => lebegőpontos típusMivel a PHP automatikusan választja ki az éppen használatos típust. Vedd hozzá még azt a tényt, hogy a számítógép nem tízes, hanem kettes számrendszerben dolgozik, és már meg is kaptad hogy természetesen nem nulla a végeredmény.
Mellesleg ez miért nem jó?
Code:if ($kor < 20) {
$korhatar = 0;
}
else {
$korhatar = 1;
}2008-07-23-14:11 #2168207„Nem tud a php számolni ?”
„Sőt, ha a nyilvánvalóan integer típusba sorolható rész-eredményeket
settype() -al integer típusúvá „erőltetem” akkor szintén
értelmetlen eredmény lesz.”Felesleges erőlködés helyett mért nem használod az erre a célra készült floor() vagy round() hívásokat?
2008-07-23-14:11 #2168208„Nem tud a php számolni ?”
„Sőt, ha a nyilvánvalóan integer típusba sorolható rész-eredményeket
settype() -al integer típusúvá „erőltetem” akkor szintén
értelmetlen eredmény lesz.”Felesleges erőlködés helyett mért nem használod az erre a célra készült floor() vagy round() hívásokat?
2008-07-23-14:28 #2168209gabaman wrote:„Nem tud a php számolni ?”„Sőt, ha a nyilvánvalóan integer típusba sorolható rész-eredményeket
settype() -al integer típusúvá „erőltetem” akkor szintén
értelmetlen eredmény lesz.”Felesleges erőlködés helyett mért nem használod az erre a célra készült floor() vagy round() hívásokat?
Kösz gabaman !
Kipróbálom.
Csak azért érdekes, mivel a kivonás előtt ha kiiratom akkor 1 lesz az eredmény,
ami helyes. Ha ebből levon 1 -et már elrontja, mi közben egy szimpla 1-1 -re helyesen 0-t ír.
Minden esetre több mint érdekes 😀2008-07-23-14:28 #2168210gabaman wrote:„Nem tud a php számolni ?”„Sőt, ha a nyilvánvalóan integer típusba sorolható rész-eredményeket
settype() -al integer típusúvá „erőltetem” akkor szintén
értelmetlen eredmény lesz.”Felesleges erőlködés helyett mért nem használod az erre a célra készült floor() vagy round() hívásokat?
Kösz gabaman !
Kipróbálom.
Csak azért érdekes, mivel a kivonás előtt ha kiiratom akkor 1 lesz az eredmény,
ami helyes. Ha ebből levon 1 -et már elrontja, mi közben egy szimpla 1-1 -re helyesen 0-t ír.
Minden esetre több mint érdekes 😀 -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz