Topic: Kodel kaikurie nurodo INT(11) ?

Gal kas galit mant kvailam paaiskinti kodel kaikurie nurodo INT(11) jei realiai INT talpina tik iki 10 simboliu ilgio skaiciu (4294967295)?
Ar as cia kvailas arba kazko nezinau ar cia tie kas raso kazko nezino?

Is anksto dekingas uz atsakymus.

Re: Kodel kaikurie nurodo INT(11) ?

int tipo ribos ne pagal simboliu kieki nustatomas,
http://dev.mysql.com/doc/refman/5.0/en/ … types.html

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

3 (edited by zygis 2009-03-30 07:46:10)

Re: Kodel kaikurie nurodo INT(11) ?

beje norejau paziuret kiek baitu uzima int tipas ir gavau kiek keistus rezultatus.

echo "4294967295 - ".dechex('4294967295')."<br />";
echo hexdec("ffffffff")." - ffffffff";

output:
4294967295 - 7fffffff
4294967295 - ffffffff

php skaiciavimo varikliukas man visada kele tik klausimus

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: Kodel kaikurie nurodo INT(11) ?

to zygis: gera tu cia bajeri aptikai :|
bet vistiek taip ir liko neatsakytas klausimas del int(11) ir int(10).

Re: Kodel kaikurie nurodo INT(11) ?

Neodan - skaičius skliausteliuose nurodo kokio pločio lauką grąžinti. Jeigu nurodyta 10 vadinasi SELECT'o metu bus grąžinta 10 simbolių. Jeigu pats skaičius yra mažesnis tai pridedami priekyje papildomi tarpai. ZEROFILL atveju nuliai. šitą dalyką mažai kas žino ir yra skaitęs, nes kaip žinia dokumentacijos niekas neskaito (-;

Re: Kodel kaikurie nurodo INT(11) ?

to minde: labai dekui uz atsakyma.

Re: Kodel kaikurie nurodo INT(11) ?

siaip panasiu bajeriu yra daugiau, dabar tiksliai nepasakysiu kur, bet dariausi skaiciavimo sistemu konverteri, kuris skaiciuodavo ir po kablelio, tai ten paleidus cikle skaiciavimus (mat po kablelio skaiciai gali ir niekada nesibaigti) tai ten po kokio 10 ciklo atsirasdavo paklaida, vis krypsta krypsta ir gaunasi baigtinis nelabai ilgas skaicius, nors skaiciuojant ant popieriaus, jie nesibaigdavo. ir kas idomiausia paleidus rezultata skaiciuotis atgal gaudavau teisinga atsakyma.

nukrypimai budavo kazkas pan i  1 == 1,00000000002

taigi likau nesusiprates. nors ilgus dvetainius skaicius imdavau kaip eilutes, perrinkinedavau po viena simboli, bet vistiek nepavykdavo isvengti tokiu "keistu" skaciavimu.

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: Kodel kaikurie nurodo INT(11) ?

Kas liečia realius skaičius tai, zygi, neapsigavinėk ir neišradinėk dviračio (-;

Pasiskaityk dokumentaciją tiek MySQL, tiek PHP, tiek kitų kalbų, nes realūs skaičiai ir yra "apytiksliai" skaičiai, ten visada galėsi išgeneruoti paklaidą ir jie nėra skirti saugoti tikslioms reikšmėms.

http://dev.mysql.com/doc/refman/5.1/en/ … types.html

The FLOAT and DOUBLE data types are used to represent approximate numeric data values.

http://www.php.net/manual/en/language.types.float.php

So never trust floating number results to the last digit, and never compare floating point numbers for equality.

čia yra elementarus, normalus dalykas, kuris atsiranda dėl logiškai paaiškinamų ir visiem žinomų priežaščių.

Re: Kodel kaikurie nurodo INT(11) ?

nu ta as suprantu, bet kai skaldai ilga skaiciu i mazas dalis ir tokiu skaiciavimu yra labai daug tai tikiesi vieno rezultato, o gauni kita. float tipo kintamuju jei gerai pamenu nebuvo, viskas buvo daroma naudojantis elementariomis skaiciavimo taisyklemis, paskaiciuoji liekana ne dalybos veiksmu % o atemus du rezultatus ir pan. kada reiks prisesti ir susirasti/parasyti kazka panasaus. nes rezultatai tikrai netiketi budavo.

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer