Navigacija

Vartotojų tinkle

Prisijungusių svečių: 20
Prisijungusių narių: 4
Prisijungę nariai: Pacans, Frozzy, marcia, .DeXter

Registruoti nariai: 19,885
Naujausias narys: FreeTemplatesLT

Naujausi straipsniai

Paskutiniai nariai

PacansNaršo
marciaNaršo
FrozzyNaršo
.DeXterNaršo
Zwimba00:06:56
Alanas00:11:39
Andryz00:12:14
minimukas00:12:20
Sharkie00:24:58
Donatas00:27:16
fixed00:38:38
zenial00:38:46
Scarletas00:39:21
Grygoo100:42:28
MaFetas00:42:46
Creatium00:43:11
laimingas00:49:43
Euga00:57:24
GiedrasGiedrius00:59:41
Boxster01:03:45

Informacija:


OS: Unknown
Naršyklė: Nežinoma
IP: 38.107.179.232
Naujienų: 472
Straipsnių: 223
Temų: 44,527
Postų: 493,645
Postų pask. parą: 141
Shout'ų pask. parą: 45
P.S.C. pask. parą: 191
Nuotraukų: 0

Hey.lt lankomumo statistika

Facebook

php-fusion-facebook
tapk-php-fusion-gerbeju-facebook

Prisijungti

Nario vardas

Slaptažodis



Dar ne narys?
Registruokis

Pamiršai slaptažodį?
Paprašyk naujo

Aktyvuoti save

Šaukykla

Jei norite rašyti žinutes, turite prisijungti.

-> Frozzy
2012/02/05 01:55
;]

-> .DeXter
2012/02/05 01:51
Priprasit, nesijaudinkit šypsosi

-> Zwimba
2012/02/05 01:39
Youtubas pasikeite tai irgi nelabai man patogu buvo. Jau pripratau ir pamirsau... šypsosi Zmones rodo kad dirba... akinanti šypsen Vat taip va... akinanti šypsen

-> Frozzy
2012/02/05 01:36
nu nebent šypsosi bet keista kaip cia sugalvooj jie akinanti šypsen

-> Zwimba
2012/02/05 01:35
O kas blogai? Seip manau grazus, patogus. Tik vat reikia priprasti... šypsosi

-> Šaukyklos archyvas ->

Apklausa

Daugiausiai pagalbos sulaukiate iš?

Administratorių

Narių

Pagalbos nesulaukiu

Pagalbos neprašau

Norėdamas balsuoti turite prisijungti.
Archyvas
Reklama 400x60
CAST'inimas, realiųjų skaičių palyginimo problemos sprendimas, bei CAST'inimas
Parašė ozzWANTED 2010 sausio 20 10:23:07


Trumpas kodas:

<?php
$i=1; $bal = 7.8;
$moketi = 1.5;
$m2 = 1.5*5.2;
print("<br /><i>".$i++.".</i> "); echo $m2." VS ".round($m2,2);
print("<br /><i>".$i++.".</i> "); echo ($moketi*5.2 > $bal) ? "true" : "false";
print("<br /><i>".$i++.".</i> "); echo ($m2 > $bal) ? "true" : "false";
print("<br /><i>".$i++.".</i> "); echo ((int)$m2 > (int)$bal) ? "true" : "false";
$m2= round($m2,2);
print("<br /><i>".$i++.".</i> "); echo ($m2 > $bal) ? "true" : "false";
?>



Kaip manote kokius atsakymus(TRUE ar FALSE) gražins sistema 4 kartus lygindama skaičius: 7.8 > 7.8 ?
Jeigu manote kad visus kartus atsakymas bus"false", JŪS KLYSTATE:

Štai ką gražina output'as:
1. 7.8 VS 7.8
2. true
3. true
4. false
5. false



Atkreipkime dėmesį, kad netgi perCAST'inimas į slankaus kablelio skaičius(real'ieji skaičiai).

Dar vienas pavyzdys:
floor((0.1+0.7)*10);



Kaip atsakymą gražins skaičių 7 !
Nors matematiškai turėtų būti 8.

Kadangi realieji slankaus kablelio skaičiai yra kompiuterijoje traktuojami kaip eilutės skleidinys. Pvz. tokiu būdu kompiuteris gali gražinti skaičiaus pi apytikslę reikšmę - ji skleidžią skaičių Teiloro eilute iki tam tikro tikslumo(t.y. VISADA egzistuoja paklaida).

Taigi, naudojanti slankaus kablelio skaičius BŪTINA žinoti, kad VISADA egzistuoja paklaida, ir PASKUTINIU skaičiumi pasitikėti nereikėtų.

Prie to paties, kas galbūt nežino kas yra CAST'inimas, Slankaus kabelio skaičiai(angl. floating-point numbers), šiek tiek informacijos:

Pagal nutylėjimą "String'ai" matematiniuose veiksmuose yra traktuojami kaip:
a) (integer) tipo skaičiai, jeigu string eilutėje nėra '.', 'e' arba 'E' simbolių;
b) (float) skaičiai, prišingu atveju.

Visi galimi kintamųjų/skaičių perdengimai(CAST'ing) PHP kalboje:
(int), (integer) - cast to integer
(bool), (boolean) - cast to boolean
(float), (double), (real) - cast to float
(string) - cast to string
(binary) - cast to binary string (PHP 5.2.1 PHP 6)
(array) - cast to array
(object) - cast to object
(unset) - cast to NULL (PHP 5)



MySQL duomenų tipų castinimas:
Prie to paties pridėsiu - jeigu norite CAST'inti duomenų tipus MySQL užklausose(nors apskritai CAST'inimas panašus SQL2 standartų kaip ir daugelyje kitų DBVS - MSSQL, Oracle, IBM DB2, Postgre SQL), tai jis vykdomas taip:

Užklausoje galima būtų daryti taip:
mysql > SELECT 91.2 AS tiksli_apimtis,
CAST(91.2 AS UNSIGNED INTEGER) AS apytiksle_apimtis,
'K.I.S.S.' AS pilna_biografija,
CAST('K.I.S.S.' AS BINARY) AS dvejetaine_biografija,
CAST('K.I.S.S.' AS CHAR(2)) AS apytiksle_apimtis;



Užklausos rezultatas būtų:
tiksli_apimtis  apytiksle_apimtis  pilna_biografija  dvejetaine_biografija  apytiksle_apimtis
----------------------------------------------------------------------------------------------------------------
91.2               91                          K.I.S.S.               K.I.S.S.                        K.



Visi galimi MYSQL CAST'inimo būdai(MySQL 5.0+):
BINARY[(N)] - į dvejetainį formatą(pre-direktyva skirta kompiliatoriui)
CHAR[(N)] - į simbolių formatą.
DATE - į datos formatą (YYYY-MM-DD)
DATETIME - į ilgąjį datos formatą (YYYY-MM-DD HH:II:SS)
DECIMAL[(M[,D])] - į dešimtainį formatą
SIGNED [INTEGER] - į skaičių aibę (-INF ---> +INF)
TIME - į laiko formatą(HH:II:SS / HHH:II:SS (ilgasis laikas))
UNSIGNED [INTEGER] - į teigiamų skaičių aibę ( >= 0)

Pastaba: [] - žymi kad parametras neprivalomas. [] simbolių rašyti NEREIKIA



Taip pat keletas nuorodų, norintiems pasiskaityti plačiau:
Duomenų tipų perliejimas(CASTing) MySQL:
http://dev.mysql.com/doc/refman/...tions.html

Duomenų tipų perliejimas(CASTing) PHP:
http://lt.php.net/manual/en/lang...ggling.php

Slankaus kablelio skaičiai:
http://php.net/manual/en/languag....float.php

PhpFusion-Lt.com © 2010 ozzWANTED


2 Komentarai · 1034 Skaityta · Spausdinti
Komentarai
Waldoss 2010 sausio 24 19:22:24
nu nx nk nesuprantu apie ka čia ;DD
dyaz 2010 vasario 28 21:42:35
Įžangos nėra... be žado
Rašyti komentarą
Prisijunkite, norėdami parašyti komentarą.
Reitingai
Balsuoti gali tik nariai.

Prašome prisijungti arba prisiregistruoti.

Nuostabu! Nuostabu! 0% [Nėra balsų]
Labai gerai Labai gerai 33% [1 Balsas]
Gerai Gerai 0% [Nėra balsų]
Patenkinamai Patenkinamai 0% [Nėra balsų]
Blogai Blogai 67% [2 Balsų]