PHP – képletszámítás, 1-1 néha nem nulla ?

Kezdőlap Fórumok Programozás PHP – képletszámítás, 1-1 néha nem nulla ?

9 bejegyzés megtekintése - 21-29 / 29
  • Szerző
    Bejegyzés
  • #2168221
    pointux
    Felhasználó
      Pingus 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)

      #2168222
      pointux
      Felhasználó
        Pingus 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)

        #2168223
        pointux
        Felhasználó

          Na, és, hogy miért nem 0,9 az a 0,9?

          pl:
          0,11 (2) = 0x2^0 + 1×2^-1 + 1×2^-2

          Na í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.

          #2168224
          pointux
          Felhasználó

            Na, és, hogy miért nem 0,9 az a 0,9?

            pl:
            0,11 (2) = 0x2^0 + 1×2^-1 + 1×2^-2

            Na í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.

            #2168225
            Pingus
            Felhasználó
              vizsla 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…. ;D

              #2168226
              Pingus
              Felhasználó
                vizsla 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…. ;D

                #2168227
                gabaman
                Felhasználó

                  Beleü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

                  #2168228
                  gabaman
                  Felhasználó

                    Beleü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

                    #1888349
                    csaba
                    Felhasználó

                      Sziasztok !

                      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. 🙂

                    9 bejegyzés megtekintése - 21-29 / 29
                    • Be kell jelentkezni a hozzászóláshoz.