Avatar billede supermand69 Nybegynder
13. oktober 2004 - 20:31 Der er 15 kommentarer og
1 løsning

Division by zero

hvordan kan man få php til at "overse" ovestående fejl? altså hvis man har et tal divideret med 0 giver det jo bare 0, men hvordan kan man gøre så den ikke udskriver en fejl?
Avatar billede jakobdo Ekspert
13. oktober 2004 - 20:35 #1
Du kan jo lave et tjek, så du tjekker om værdier er 0, og er den det, så giv en forklaring, eller fejl-besked.
Avatar billede supermand69 Nybegynder
13. oktober 2004 - 20:39 #2
jeg troede man kunne gøre så den bare "overså" fejlen? men det er måske ikke muligt? man skal altså tjekke værdien man dividere med?
Avatar billede erikjacobsen Ekspert
13. oktober 2004 - 20:39 #3
Meget enig med jakobdo - for hvorfor overse noget der vil give
et forkert resultat. Men du kan da:

<?
  $b=0;
  $a=7;
                                                                               
  @print $a/$b;
                                                                               
  @$c=$a/$b;
                                                                               
?>
Avatar billede hasmi Nybegynder
13. oktober 2004 - 20:39 #4
Bare lige en bemærkning for at rette denne bemærkning:
"hvis man har et tal divideret med 0 giver det jo bare 0"
Det er ikke korrekt. Man kan slet ikke dividere med 0. Prøv selv på lommeregneren.
Sådan kan det også vises:
6:2 = 3, fordi 2*3= 6
6:0 = 0, fordi 0*0=6 !!
Avatar billede supermand69 Nybegynder
13. oktober 2004 - 20:46 #5
jeg skal bare regne nogle % ud... og hvis der ikke er nogle tal at regne ud fra er det jo bare 0 :)
Avatar billede supermand69 Nybegynder
13. oktober 2004 - 20:47 #6
erikjacobsen > lav et svar :)
Avatar billede erikjacobsen Ekspert
13. oktober 2004 - 20:49 #7
$drenge=0;
$piger=0;
$alle=$drenge+$piger;

print "Der er ".(100*($piger/$alle))."% piger";

giver ingen mening overhovedet. Der er ikke 0% piger, eller 100%
eller noget andet tal. Man kan ikke udregner procenter af noget, der
ikke er noget.

Prøv nu med den "if" ;)
Avatar billede erikjacobsen Ekspert
13. oktober 2004 - 20:50 #8
Nej tak, jeg samler slet ikke på point. Og da slet, slet ikke hvis
du vil bruge min "løsning" med @-et.... *g*
Avatar billede supermand69 Nybegynder
13. oktober 2004 - 20:55 #9
<?=@num(($contributions_user[0] / $contributions[0]) * 100, 2)?>% af alt / <?=@num(($contributions_user[0] / $days), 2)?> pr. dag)

vil regne ud hvor mange % brugerens indlæg udgør af alt, og hvis han ikke har lavet nogle indlæg er det jo 0%
Avatar billede supermand69 Nybegynder
13. oktober 2004 - 20:56 #10
erik > ok... så beholder jeg dem da bare... hehe :p
Avatar billede erikjacobsen Ekspert
13. oktober 2004 - 20:59 #11
Hvis  $contributions[0]  er 0 får du en fejl.
Hvis  $contributions_user[0]  er 0 får du ingen fejl.

Hvis et brugerindlæg altså også tæller som et indlæg, kommer du jo
aldrig til at dividere med 0.
Avatar billede erikjacobsen Ekspert
13. oktober 2004 - 21:00 #12
Er det fordi $days kan blive 0 ??
Avatar billede supermand69 Nybegynder
13. oktober 2004 - 21:03 #13
$contributions_user[0] = antal indlæg brugeren har lavet
$contributions[0] = alle indlæg i hele debat forumet
$days = antal dage brugeren har været registreret

de 2 første kan jo så være 0 hvis der ikke findes nogle indlæg overhovedet eller hvis brugeren ikke har lavet nogle indlæg endnu :)
Avatar billede erikjacobsen Ekspert
13. oktober 2004 - 21:07 #14
Whatever... men det giver ikke 0%.
Men lad da bare dine brugere grine af dig ;)
Avatar billede supermand69 Nybegynder
13. oktober 2004 - 21:13 #15
hvad giver det så? :) 0 ud af 3,6767676767676767882 er vel 0%? hehe
Avatar billede Slettet bruger
13. oktober 2004 - 22:00 #16
Et tal delt med 0 giver et udefinerbart resultat, og denne lille stump tydeliggør hvorfor:

<?php

header('Content-Type: text/plain');

$tal=5;

for($i=1;$i<=$tal;$i+=0.5){
  $x=1/$i;
  echo "1/$x = ";
  echo 1/$x;
  echo "\n";
}
echo "Når tallet, der deles med, nærmer sig 0 oppefra, bliver resultatet større.\n";
echo "Når tallet, der deles med, nærmer sig 0 nedefra, bliver resultatet lavere.\n";
echo "Skal X/0 så være +uendeligt eller -uendeligt?\n";
for($i=$tal;$i>=1;$i-=0.5){
  $x=-1/$i;
  echo "1/$x = ";
  echo 1/$x;
  echo "\n";
}

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