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-15:28 #2168221Pingus wrote:Azért hiszed illetve tűnik Neked az, hogy hozzá nem értő vagyok
Ez azért van, mert számotokra nem azonos a „hozzáértő kifejezés”.
Ha egy kicsit is ismernéd őt, akkor tudnád, hogy ért hozzá… te a programozási nyelvek terén felhasználó vagy ő meg már „majdnem” professzinista.
Csakhogy „elvicceljem” a témát ha egy bikinis csaj képét nézed, akkor te max. odáig jutsz el, hogy rossz a kontraszt*, ő meg már látja maga előtt hexában és azt is tudja, hogy milyen biteket kell megváltoztatni, hogy jó legyen a kép.
* ellentétben az átlag emberrel, aki csak a didiket nézi (számodra ők a hozzá nem értők és hozzájuk képest te profi vagy :); számára meg azok a hozzá nem értők, akik nem hexában nézik a didiket)
2008-07-23-15:28 #2168222Pingus wrote:Azért hiszed illetve tűnik Neked az, hogy hozzá nem értő vagyokEz azért van, mert számotokra nem azonos a „hozzáértő kifejezés”.
Ha egy kicsit is ismernéd őt, akkor tudnád, hogy ért hozzá… te a programozási nyelvek terén felhasználó vagy ő meg már „majdnem” professzinista.
Csakhogy „elvicceljem” a témát ha egy bikinis csaj képét nézed, akkor te max. odáig jutsz el, hogy rossz a kontraszt*, ő meg már látja maga előtt hexában és azt is tudja, hogy milyen biteket kell megváltoztatni, hogy jó legyen a kép.
* ellentétben az átlag emberrel, aki csak a didiket nézi (számodra ők a hozzá nem értők és hozzájuk képest te profi vagy :); számára meg azok a hozzá nem értők, akik nem hexában nézik a didiket)
2008-07-23-15:47 #2168223Na, és, hogy miért nem 0,9 az a 0,9?
pl:
0,11 (2) = 0x2^0 + 1×2^-1 + 1×2^-2Na így kell felírni a 0,9-et, ami csak közelítve megy.
pl.:
0,1111 (2) [4 bittel] = 0,9375
0,11101 (2) [5 bittel] = 0,90625
0,11100111 (2) [8 bittel] = 0,9023437
…Látható, hogy minél több bit, annál pontosabb. És itt jön be a kerekítés: az első szám (jelen esetben – bár a legrosszabbra kell számolni) 2 tizedes jegy pontosságú, tehát 2 tizedes jegyre kell kerekíteni, hogy jó számot mutasson. A második is, de a 3. már jó 6-ra.
Jelen esetben! Mert valójában rosszabb lehet a helyzet.
A legtöbb kimenetnél ez automatikusan megoldott, meg a típusok automatikus konvertálása is, hogy végül is jó eredményt adjon mégpedig úgy, hogy be van állítva egy fix pontosság, amitől rosszabb pontosságot nem lehet kapni, csak jobbat és arra kerekít a 10-es számrendszeri eredményen, mert 2-es számrendszerben ez kerek szám.
Jelen esetben ez a kerekítés hiányzik (hogy miért azt ne kérdezd, nem tudom) és ezért „rossz” az eredmény.2008-07-23-15:47 #2168224Na, és, hogy miért nem 0,9 az a 0,9?
pl:
0,11 (2) = 0x2^0 + 1×2^-1 + 1×2^-2Na így kell felírni a 0,9-et, ami csak közelítve megy.
pl.:
0,1111 (2) [4 bittel] = 0,9375
0,11101 (2) [5 bittel] = 0,90625
0,11100111 (2) [8 bittel] = 0,9023437
…Látható, hogy minél több bit, annál pontosabb. És itt jön be a kerekítés: az első szám (jelen esetben – bár a legrosszabbra kell számolni) 2 tizedes jegy pontosságú, tehát 2 tizedes jegyre kell kerekíteni, hogy jó számot mutasson. A második is, de a 3. már jó 6-ra.
Jelen esetben! Mert valójában rosszabb lehet a helyzet.
A legtöbb kimenetnél ez automatikusan megoldott, meg a típusok automatikus konvertálása is, hogy végül is jó eredményt adjon mégpedig úgy, hogy be van állítva egy fix pontosság, amitől rosszabb pontosságot nem lehet kapni, csak jobbat és arra kerekít a 10-es számrendszeri eredményen, mert 2-es számrendszerben ez kerek szám.
Jelen esetben ez a kerekítés hiányzik (hogy miért azt ne kérdezd, nem tudom) és ezért „rossz” az eredmény.2008-07-23-18:31 #2168225vizsla wrote:Na, és, hogy miért nem 0,9 az a 0,9?
pl:
0,11 (2) = 0x2^0 + 1×2^-1 + 1×2^-2 (…)Kösz vizsla a példát, utána számoltam én is, és hát valóban nem ártott felidézni.
A számábrázolással már elég régóta nem foglalkoztam [sajnos] .A floor() használatával helyesen működik a script.
„Ez azért van, mert számotokra nem azonos a „hozzáértő kifejezés”.
Ha egy kicsit is ismernéd őt, akkor tudnád, hogy ért hozzá… te a programozási
nyelvek terén felhasználó vagy ő meg már „majdnem” professzinista.”
Ok, amit írt magáról, abból nyilván látható hogy alapos mély tudású szakértő,
csak viccesen fogalmazva mondhatni beledöngölt a betonba. Csak ennyi lett volna.A kisbetü és gabaman kérdésére hogy miért nem feltétel-vizsgálattal oldom meg :
azért mivel a hitel mértéke nem csak a havi jövedelemtől, igényelt összegtől függ,
hanem a kortól is, mely ha túl magas akkor vagy csökken az igényelhető összeg,
vagy nem is kaphat hitelt. Viszont ha túl alacsony, akkor sem.
Egy adott korig nőhet az összeg.
Így csak annyit kell figyelni, hogy a kor-határozó mekkora, 20 ->1 , 30->2, 40->3,
stb.. egy switch(kor_hatarozo)..case nyelvi szerkezetben pedig
eldönti a program, hogyan folyásolja be a kamat mértékét.
Egy idősebb ember kamata így más lesz mint egy 40 év alattié.
Viccesen fogalmazva, „azt bünteti” aki viszonylag fiatal, jól keres és sok hitelt
akar felvenni. 😀
Egy szóval már működik a program és hát jól kereső középkorú vagyonos
ember jobb ha nem kér hitelt a programtól…. ;D2008-07-23-18:31 #2168226vizsla wrote:Na, és, hogy miért nem 0,9 az a 0,9?
pl:
0,11 (2) = 0x2^0 + 1×2^-1 + 1×2^-2 (…)Kösz vizsla a példát, utána számoltam én is, és hát valóban nem ártott felidézni.
A számábrázolással már elég régóta nem foglalkoztam [sajnos] .A floor() használatával helyesen működik a script.
„Ez azért van, mert számotokra nem azonos a „hozzáértő kifejezés”.
Ha egy kicsit is ismernéd őt, akkor tudnád, hogy ért hozzá… te a programozási
nyelvek terén felhasználó vagy ő meg már „majdnem” professzinista.”
Ok, amit írt magáról, abból nyilván látható hogy alapos mély tudású szakértő,
csak viccesen fogalmazva mondhatni beledöngölt a betonba. Csak ennyi lett volna.A kisbetü és gabaman kérdésére hogy miért nem feltétel-vizsgálattal oldom meg :
azért mivel a hitel mértéke nem csak a havi jövedelemtől, igényelt összegtől függ,
hanem a kortól is, mely ha túl magas akkor vagy csökken az igényelhető összeg,
vagy nem is kaphat hitelt. Viszont ha túl alacsony, akkor sem.
Egy adott korig nőhet az összeg.
Így csak annyit kell figyelni, hogy a kor-határozó mekkora, 20 ->1 , 30->2, 40->3,
stb.. egy switch(kor_hatarozo)..case nyelvi szerkezetben pedig
eldönti a program, hogyan folyásolja be a kamat mértékét.
Egy idősebb ember kamata így más lesz mint egy 40 év alattié.
Viccesen fogalmazva, „azt bünteti” aki viszonylag fiatal, jól keres és sok hitelt
akar felvenni. 😀
Egy szóval már működik a program és hát jól kereső középkorú vagyonos
ember jobb ha nem kér hitelt a programtól…. ;D2008-07-23-23:23 #2168227Beleütköztél egy programozási nyelvtől független alkalmazott matematikai problémába amit – szerintem – minden hozzáértőnek illik tudni. Ez olyan mint a KRESZ, aki nem ismeri nem állíthatja – legalábbis korrekt módon – hogy jól tud közlekedni. De ezt nem látod be és arroganciával pótolod. Annak ellenére hogy együtt bólogattál velem amiért ez a probléma „valóban középiskolai anyag, de ettől függetlenül a főiskolai matematikai/informatikai szakon ezt szintén alaposan tanították, és teljesen még nem felejtettem el.” – idézet tőled.
„mondhatni beledöngölt a betonba”
Nem minősítettem a csodaképletet, pedig bőven lett volna mit mondanom róla. Nem kérdeztél vissza és nem is kezdtél el vitatkozni a tartalmi résszel (pedig ez lett volna a helyes út) hanem védekezni kezdtél később meg támadni. Saját magadat döngölted a földbe amikor a kezdeti „hozzá nem értő” véleményemet később saját magad igazoltad.
„Így csak annyit kell figyelni, hogy a kor-határozó mekkora, 20 ->1 , 30->2, 40->3,
stb..”$korHatar=ceil(($kor+1)/10)-1
2008-07-23-23:23 #2168228Beleütköztél egy programozási nyelvtől független alkalmazott matematikai problémába amit – szerintem – minden hozzáértőnek illik tudni. Ez olyan mint a KRESZ, aki nem ismeri nem állíthatja – legalábbis korrekt módon – hogy jól tud közlekedni. De ezt nem látod be és arroganciával pótolod. Annak ellenére hogy együtt bólogattál velem amiért ez a probléma „valóban középiskolai anyag, de ettől függetlenül a főiskolai matematikai/informatikai szakon ezt szintén alaposan tanították, és teljesen még nem felejtettem el.” – idézet tőled.
„mondhatni beledöngölt a betonba”
Nem minősítettem a csodaképletet, pedig bőven lett volna mit mondanom róla. Nem kérdeztél vissza és nem is kezdtél el vitatkozni a tartalmi résszel (pedig ez lett volna a helyes út) hanem védekezni kezdtél később meg támadni. Saját magadat döngölted a földbe amikor a kezdeti „hozzá nem értő” véleményemet később saját magad igazoltad.
„Így csak annyit kell figyelni, hogy a kor-határozó mekkora, 20 ->1 , 30->2, 40->3,
stb..”$korHatar=ceil(($kor+1)/10)-1
2009-12-04-20:03 #1888349Sziasztok !
Egy hitel-igénylést elbíráló php script írásakor
érthetetlen eredmény keletkezik, melynek nem tudom
az okát.Hiteligénylő űrlapról bekért adatok alapján, az elbíráláshoz
ki kell szűrni azt aki 20 évesnél fiatalabb, azaz
jelen esetben 19 éves nem kaphat egy adott típusú hitelt.A hitel-igénylés elbíráló képletben a korhatár meghatározása :
$korHatar=(($kor/10)-(($kor % 10)/10))-1;Na most 19 éves kor esetén, ha a képletet „részletekben” számoljuk,
a következő eredmények keletkeznek :$kor % 10 : 9
($kor % 10)/10 : 0.9$kor/10 : 1.9
($kor/10)-(($kor % 10)/10) : 1(($kor/10)-(($kor % 10)/10))-1 : -1.1102230246252E-16 (!!??!!) ???
Nos az utolsó sorban, azaz a képlet kiszámítása után
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. 😮 :-Nem értem, miért lesz adsurd (még csak nem is hasonlító)
negatív írtó pici tizedes tört az eredmény ?Köszi a választ mindenkinek. 🙂
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz