atikons Posted November 4, 2005 Report Share Posted November 4, 2005 Man vajag noteikt vai skaitlis ir daļskaitlis. Kā to pārbaudīt? Link to comment Share on other sites More sharing options...
bubu Posted November 4, 2005 Report Share Posted November 4, 2005 (edited) Tīri teorētiski jebkura reāla skaitļa attēlojums datora atmiņā (float vai double) ir daļskaitlis, jo tajā float vai double jau nevar precīzi saglabāt iracionālu skaitli. Tā ka.. nezinu vai tavs uzdevums ir tik vienkārši saprotams, ko īsti vēlies panākt. Edit: Tikko palasīju wikipēdiju un tur teikts, ka ir skaitļi par kuriem zināms, ka tie ir reāli, taču nav zināms (t.i. nav zināms kā pierādīt) vai tie ir iracionāli. Tā kā R = Q apvienojums ar iracionāliem skaitļiem, tad par tiem arī nav zināms vai tie nav racionāli skaitļi (ja to tu domā ar vārdu daļskaitlis). Edited November 4, 2005 by bubu Link to comment Share on other sites More sharing options...
KAC Posted November 4, 2005 Report Share Posted November 4, 2005 varbuut noderees f-jas is_int is_float Link to comment Share on other sites More sharing options...
Paulinjsh Posted November 4, 2005 Report Share Posted November 4, 2005 (edited) Emz.. Hmz.. Vajaga pārbaudīt vai kkas ir aiz komata :) Ja ir tad ir daļskaitlis, ja tā domā.. KAC jau uzrakstīja risinājumu :) Edited November 4, 2005 by Paulinjsh Link to comment Share on other sites More sharing options...
bubu Posted November 4, 2005 Report Share Posted November 4, 2005 Ar daļskaitli tiek domāts jebkāds nevesels skaitlis? Link to comment Share on other sites More sharing options...
atikons Posted November 4, 2005 Author Report Share Posted November 4, 2005 Lieta tāda, man vajag izvadīt procentu likmi. Ja procentu likme ir 24,889542, tad es izvadu "~25%", ja procentu likme ir TIEŠI 40%, tad es izvadu "40%". Prātu jauc tā "~" zīme. Noapaļots tiek ar round() funkciju. varbuut noderees f-jasis_int is_float jau mēģināju Man datu bāzē skaitlis ir glabāts kā float. Ja ir cipars 10, tad viņš vienalga ir float. Tā kā vienmēr viņš ir float. Link to comment Share on other sites More sharing options...
bubu Posted November 4, 2005 Report Share Posted November 4, 2005 echo (intval($num)-$num?'~':'').round($num); Link to comment Share on other sites More sharing options...
atikons Posted November 4, 2005 Author Report Share Posted November 4, 2005 (edited) Hm.. īsti nestrādā. Piemērs: $procenti = (1-($row["price"]/$row["s_price"]))*100; echo (intval($procenti)-$procenti?'~':'').round($procenti)."%<br>"; ja price=900 un s_price=1000, tad atlaidei ir jāsanāk precīzi 10%, bet viņš tāpat rāda ~10%. taču, ja price=60 un s_price=80, tad parāda normāli 20%. Izdarīju šitā: echo " ".intval($procenti)." "; //atgriež 9 echo round($procenti)." "; //atgriež 10 Hmm... Pašam arī trūkst ideju. Edited November 6, 2005 by atikons Link to comment Share on other sites More sharing options...
atikons Posted November 6, 2005 Author Report Share Posted November 6, 2005 Tukšais posts, lai vienkārši pievērstu uzmanību. Tomēr tā funkcija nestrādā kā nākas. Skatīt augstāk. P.S. Gan jau es pārkāpju kādu noteikumu, sorry bubu, esi iecietīgs. Link to comment Share on other sites More sharing options...
bubu Posted November 6, 2005 Report Share Posted November 6, 2005 (edited) Tas notiek tāpēc, ka peldošā punkta skaitļi nevar precīzi attēloties datorā. un tā $procenti kalkulācija neizdod ārā skaitli 10, bet kautkādu 9.9999999...99 ar ļoti daudziem 9, vienkārši drukājot echo $procenti drukāsies pareizi, jo dators pats noapaļos. Turpretī pārvēršot uz integer'u tas pārvērtīsies uz 9. Atrisinājums ir vienkāršs, pamaini sākuma formulu uz: $procenti = (1000-900)*100/1000; Tad precizitāte zudīs daudz mazāk. Pie tam - kāpēc tu procentus rēķini php, nevis pašā sql pieprasījumā? Edited November 6, 2005 by bubu Link to comment Share on other sites More sharing options...
atikons Posted November 6, 2005 Author Report Share Posted November 6, 2005 Ir oki! Bet kā tad var rēķināt SQL pieprasījumā? Link to comment Share on other sites More sharing options...
bubu Posted November 6, 2005 Report Share Posted November 6, 2005 SELECT (lauks2-lauks1)*100/lauks2 FROM tabula WHERE .... Link to comment Share on other sites More sharing options...
atikons Posted November 6, 2005 Author Report Share Posted November 6, 2005 kādi +, kādi - vienam vai otram varianta. Atklāti sakot, šitādu variantu redzu pirmo reizi. Varbūt ir kaut kas labās, serverim slodze mazāka vai? un kā izvada to rezultātu? mysql_fetch_array() vajag, tas skaidrs. Bet tālāk. Aiziet offtopic... Vairs nebūs "?" no manas puses. Link to comment Share on other sites More sharing options...
bubu Posted November 6, 2005 Report Share Posted November 6, 2005 Šāds variants nav nekas neparasts un nezināms. SQLā var daudz daudz lietu izdarīt. Domāju, ka php skriptā šīs darbības izpildīsies ilgāk (relatīvi) nekā SQL pieprasījumā. Pie tam - mazāk taču maintenances darbu tev būs, kad vajadzēs tev kautko pamainīt. Zināsi, ka jāskatās SQL kverijs, ja vajadzēs ko palabot, nevis kodā meklēt kas un kā tur rēķinās. Nu vienkāršām operācijām varbūt tas vienalga, bet ja kas lielāks tad domāju gan ka vieglāk to vienā vietā redzēt. Link to comment Share on other sites More sharing options...
Recommended Posts