Ik ben bezig met enkele complexe berekeningen in PHP, waardoor ik denk dat ik tegen de maximum precieze aanloop van PHP in berekeningen. In een simpel voorbeeld kijk ik hoe vaak ik 1 door 2 kan delen, vervolgens het resultaat door 2 delen en dat resultaat weer door 2. Theoretisch gezien gaat dit door tot in het oneindige, maar PHP denkt daar anders over:
Na 1075 iteraties zal PHP een 0 geven als resultaat. Mijn vraag is nu, waardoor komt dit? Als ik de precision aanpas in de php.ini file, van bijvoorbeeld 14 naar 28, is het resultaat hetzelfde.
Wie kan mij uitleggen waarom ik tegen dit limiet aan loop, waar het door komt en wat ik er eventueel aan/tegen kan doen?
PHP:
1
2
3
4
5
6
7
| $i = 1; $counter = 0; while($i != 0){ $i = $i/2; $counter++;} echo $counter; |
Na 1075 iteraties zal PHP een 0 geven als resultaat. Mijn vraag is nu, waardoor komt dit? Als ik de precision aanpas in de php.ini file, van bijvoorbeeld 14 naar 28, is het resultaat hetzelfde.
Wie kan mij uitleggen waarom ik tegen dit limiet aan loop, waar het door komt en wat ik er eventueel aan/tegen kan doen?
[ Voor 0% gewijzigd door BtM909 op 29-10-2013 14:34 . Reden: je kan [php]-tags gebruiken voor code ;-) ]