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 ?

10 bejegyzés megtekintése - 1-10 / 29
  • Szerző
    Bejegyzés
  • #2168201
    kisbetu
    Felhasználó

      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.

      #2168202
      kisbetu
      Felhasználó

        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.

        #2168203
        Pingus
        Felhasználó
          kisbetu 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 — ?

          #2168204
          Pingus
          Felhasználó
            kisbetu 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 — ?

            #2168205
            gabaman
            Felhasználó

              „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ípus

              Mivel 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;
              }
              #2168206
              gabaman
              Felhasználó

                „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ípus

                Mivel 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;
                }
                #2168207
                gabaman
                Felhasználó

                  „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?

                  #2168208
                  gabaman
                  Felhasználó

                    „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?

                    #2168209
                    Pingus
                    Felhasználó
                      gabaman 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  😀

                      #2168210
                      Pingus
                      Felhasználó
                        gabaman 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  😀

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