Jump to content
php.lv forumi

? noteikt, vai ir daļskaitlis


atikons

Recommended Posts

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 by bubu
Link to comment
Share on other sites

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-jas

is_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

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 by atikons
Link to comment
Share on other sites

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 by bubu
Link to comment
Share on other sites

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

Šā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

×
×
  • Create New...