Avatar billede xsix Nybegynder
01. juni 2009 - 11:26 Der er 11 kommentarer og
1 løsning

Division by zero

Hej Eksperter.

Jeg har en funktion hvor der bliver sendt nogle forskellige tal igennem alt efter hvilken type bruger det er.

Jeg skal så dividere nogle tal, men med nogle brugertyper er der så tal der skal divideres med 0, hvor jeg selvfølgelig så får "Division by zero" error, men  er der nogen måde hvorpå man kan få PHP til at ignorere den error?

Da de steder hvor der så bliver divideret med 0, skal resultatet også bare være 0.

Jeg kunne sætte det op på en anden måde, så det kommer til at virke, men hvis jeg kunne bibeholde min nuværende metode og så bare få den til at ignorere division by zero, ville jeg hellere det.

På forhånd tak.
Avatar billede xsix Nybegynder
01. juni 2009 - 11:31 #1
Det er egentlig bare denne warning jeg skal have til at "forsvinde", da resultatet jeg skal bruge bliver printet fint ud.

Warning: Division by zero in /xxx/xxx/xxx.php on line ##
Avatar billede speedy Nybegynder
01. juni 2009 - 11:38 #2
Inde i din funktion bør du tjekke om det tal du skal dividere med er 0, og hvis det er det så bare returnere 0.

Jeg ved ikke om man kan få PHP til at ignorere den fejl, men under alle omstændigheder vil det klart være pænest selv at lave tjekket inden divisionen foregår - det er jo trods alt en illegal operation at dividere med 0 :)
Avatar billede xsix Nybegynder
01. juni 2009 - 11:41 #3
Ja det var også det der var min plan hvis man ikke kunne få PHP til at ignorere fejlen.
Venter lige et par timer og ser om der er nogle der ved om man kan få PHP til at ignorere det, ellers får du bare point :)
Avatar billede speedy Nybegynder
01. juni 2009 - 11:45 #4
Jeg vil ikke have point for den kommentar jeg har skrevet. Det var blot for at udtrykke min mening omkring det - derfor skrevet som en kommentar :)
Avatar billede xsix Nybegynder
01. juni 2009 - 11:49 #5
Hmm well nu har jeg lavet det så det virker, er du sikker på du ikke vel have point? Ellers lukker jeg den bare :)
Avatar billede speedy Nybegynder
01. juni 2009 - 11:50 #6
Du lukker den bare :)
Avatar billede repox Seniormester
01. juni 2009 - 11:51 #7
Jeg er med speedy.

Det giver ingen mening at lade PHP beregne noget som er matematisk forkert, og så undertrykke det.

Og hvorfor dog bruge tid på at finde en makværks løsning på noget der er så simpelt som at kontrollere at et tal ikke er nul?

if($tal == 0)
    return 0;

En pæn og korrekt løsning.

Jeg håber ikke det er en vane for dig at undertrykke advarsler og fejl fra PHP istedet for at håndtere dem.
Avatar billede hypofysen Nybegynder
01. juni 2009 - 11:58 #8
du kan vel bare smide et @ foran, altså @$tal - det burde ignorere warnings... måske ikke så pæn kode men det er da en løsning..
Avatar billede xsix Nybegynder
01. juni 2009 - 12:04 #9
repox: Nej men det er fordi jeg har en switch med nogle multipliers, som jeg prøvede at holde "ren" og jeg havde 9 tal som først blev divideret idet de blev echo'et (hvilket måske hellere ikke er så pænt og korrekt). Men nu har jeg så rykket dem op og divideret dem i selve switchen.

hypofysen: Du kan bare smide et svar, da du jo kom med løsningen på selve spørgsmålet :)
Avatar billede hypofysen Nybegynder
01. juni 2009 - 12:22 #10
ta' selv de point, det var vist lidt for enkelt til et svar :)
Avatar billede hypofysen Nybegynder
01. juni 2009 - 12:22 #11
hov det blev et svar alligevel - bare ignorer det :)
Avatar billede xsix Nybegynder
01. juni 2009 - 17:35 #12
Enkelt men præcist :) Men jeg gør som du ønsker, tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester