Hoevaak een getal ergens in past

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Lord Gaga

Lord Gaga

20/07/2011 19:24:35
Quote Anchor link
Hallo,

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
 
PHP hulp

PHP hulp

24/04/2024 07:34:12
 
Hugo Maes

Hugo Maes

20/07/2011 19:40:36
Quote Anchor link
Volgens mij moet je eens Googlen naar "modulus", als ik mij niet vergis in PHP gebruikt als %

voorbeeld:

101 % 50

geeft als resultaat de overblijvende integer, te weten 1

Toevoeging op 20/07/2011 19:46:34:

Zoiets dus:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
?>
 
Lord Gaga

Lord Gaga

20/07/2011 20:12:41
Quote Anchor link
Ik had ook zoiets:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$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?
 
Wouter J

Wouter J

20/07/2011 20:20:47
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;

?>

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
 
Lord Gaga

Lord Gaga

20/07/2011 20:23:39
Quote Anchor link
Ik heb dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$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
 
Wouter J

Wouter J

20/07/2011 20:26:29
Quote Anchor link
Dat van jou werkt wel, maar je hebt dan wel komma getallen. Bij die van mij heb je geen komma getallen.
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
 
Lord Gaga

Lord Gaga

20/07/2011 20:29:03
Quote Anchor link
Ik rond de getallen naar beneden af, want het getal achter de komma is het volgende bedrag.

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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
}
Gewijzigd op 20/07/2011 20:32:12 door Lord Gaga
 
Wouter J

Wouter J

20/07/2011 20:32:10
Quote Anchor link
Dan gaat er in jouw PHP script iets verkeerd. Want met javascript werkt het gewoon: http://jsbin.com/afomeg
 
Lord Gaga

Lord Gaga

20/07/2011 20:32:47
Quote Anchor link
Zie m'n edits :P
 
Hugo Maes

Hugo Maes

20/07/2011 20:34:03
Quote Anchor link
Hey, ik had toch ook 14 als restant?
lol
 
Lord Gaga

Lord Gaga

20/07/2011 20:35:27
Quote Anchor link
Jij hebt Knoeten dezelfde waarde gegeven als Sikkels volgens mij, en dat moet niet
 
Hugo Maes

Hugo Maes

20/07/2011 20:47:18
Quote Anchor link
$knoeten_over = $deel2;
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!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.