Hoevaak een getal ergens in past
Ik ben weer bezig met een Harry Potter site en heb weer het probleem met restdeling (Galjoenen, Sikkels en Knoeten).
Ik weet inmiddels wat het idee erachter is (hoe ik het zou moeten doen), maar ik weet nog niet hoe ik dit in een formule kan zetten.
1 Galjoen = 493 knoeten
1 Sikkel = 29 knoeten
1 Knoet = 1 knoet
Ik heb een totaal van 1029 Knoeten, dus ik heb een functie nodig die kijkt hoevaak 493 in 1029 past (2x), dan hou ik 43 over, nu moet ik kijken hoevaak 29 in 43 past (1x), en wat dan overblijft is het aantal knoeten,
maar ik weet niet of hier een functie voor is, en hoe ik die moet gebruiken
Kan iemand me helpen?
Gewijzigd op 20/07/2011 19:30:17 door Lord Gaga
voorbeeld:
101 % 50
geeft als resultaat de overblijvende integer, te weten 1
Toevoeging op 20/07/2011 19:46:34:
Zoiets dus:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$galjoen = 493;
$sikkel = 29;
$aantal_in_bezit = 1029;
$deel1 = $aantal_in_bezit % $galjoen;
$deel2 = $deel1 % $sikkel;
$knoeten_over = $deel2;
echo $deel2;
?>
$galjoen = 493;
$sikkel = 29;
$aantal_in_bezit = 1029;
$deel1 = $aantal_in_bezit % $galjoen;
$deel2 = $deel1 % $sikkel;
$knoeten_over = $deel2;
echo $deel2;
?>
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$totaal = 1029;
$galjoenen = $totaal / 493;
$rest = $totaal % 493;
$sikkels = $rest / 29;
?>
$totaal = 1029;
$galjoenen = $totaal / 493;
$rest = $totaal % 493;
$sikkels = $rest / 29;
?>
En ik krijg het aantal knoeten er maar niet uit, jij heb nu de Knoeten altijd evenveel als de Sikkels, maar dat hoort dus niet, weet iemand anders hoe ik het aantal knoeten (het getal dat dus overblijft) uitreken?
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$totaal = 1029;
$rest = $totaal % 493;
$galjoen = ($totaal - $rest) / 493;
$knoeten = $rest % 29;
$sikkels = ($rest - $knoeten) / 29;
?>
$totaal = 1029;
$rest = $totaal % 493;
$galjoen = ($totaal - $rest) / 493;
$knoeten = $rest % 29;
$sikkels = ($rest - $knoeten) / 29;
?>
Niet getest maar moet wel werken volgens mij.
EDIT: Nu wel getest en het werkt (in JavaScript in elk geval wel :)).
Gewijzigd op 20/07/2011 20:24:10 door Wouter J
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$totaal = 1029;
$galjoenen = $totaal / 493;
$rest = $totaal % 493;
$sikkels = $rest / 29;
$knoeten = $rest % 29;
?>
$totaal = 1029;
$galjoenen = $totaal / 493;
$rest = $totaal % 493;
$sikkels = $rest / 29;
$knoeten = $rest % 29;
?>
En ik heb dit getest, en dit werkt nu helemaal goed, ik ga nu jouw code even testen
Edit:
Nee, de jouwe geeft de Galjoenen niet goed terug
Wat jij als rest hebt neergezet, is het aantal Galjoenen eigenlijk al
Gewijzigd op 20/07/2011 20:26:14 door Lord Gaga
Je zal zeggen, dan gebruik ik toch float. Maar dan krijg je afrondingsverschillen. Bijv. als je op 4.5 uitkomt wordt het 5 keer terwijl het eigenlijk maar 4 keer past.
Huh, dan begrijp ik niet wat jij bedoelt. Als je 1029 hebt wil je toch eigenlijk kunnen zeggen:
2 galjoenen, 1 sikkel en 14 knoeten
Of heb ik het dan verkeerd?
Gewijzigd op 20/07/2011 20:28:40 door Wouter J
Als ik 10,40 galjoenen heb, worden dan 10 galjoenen en 40 sikkels,
dus zolang ik alles naar beneden afrond, word het goed weergegeven :P
Edit:
Ja, 2 Galjoenen, 1 sikkel en 14 knoeten, maar bij jouw script stonden er 0 galjoenen :/
Edit2:
Laat maar, nu opeens niet meer :S
Edit3:
Maar ik heb nu dus dit, en als het goed is werkt dit ook:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
function convert($total) {
$galleons = $total / 493;
$rest = $total % 493;
$sickles = $rest / 29;
$knuts = $rest % 29;
return floor($galleons) . ', ' . floor($sickles) . ', ' . floor($knuts);
}
$galleons = $total / 493;
$rest = $total % 493;
$sickles = $rest / 29;
$knuts = $rest % 29;
return floor($galleons) . ', ' . floor($sickles) . ', ' . floor($knuts);
}
Gewijzigd op 20/07/2011 20:32:12 door Lord Gaga
Zie m'n edits :P
lol
Jij hebt Knoeten dezelfde waarde gegeven als Sikkels volgens mij, en dat moet niet
echo $deel2;
dat waren de knoeten, en de Sikkels zijn 29 knoeten waard.
Je hebt mijn voorbeeldje dus foutief geïnterpreteerd.
Geeft niet hoor, ik zal een volgende keer wat uitgebreider schrijven wat ik bedoel.
Nu ben je alleszins op de goede weg, little wizzard!