Hi,
hab ein Script entworfen dass zahlen(immer der doppelte wert der vorherigen zahl) in ein array speichert!
Nur ab ca. 60 mal verdoppeln, ist die gesamtsumme einfach um 1 zu hoch! woran liegt das?
Hier das script:
print_r gibt mir das array aus, und alles stimmt!
allerdings gibt array_sum ab ca. 60 (habs in zehnerschritten probiert, 50 ging noch, 60 war da ergebnis eines zu viel) aus!
kann doch eigentlich nicht sein dass es einfach so 1 dazuzählt?!
mfg
ps:
print_r gibt folgendes aus:
müsste also stimmen!
der gesamtwert ergibt aber komischerweiße 1.152.921.504.606.846.976
was gar nicht möglich ist, da alle zahlen bis auf die 1 gerade zahlen sind
-->ungerade zahl müsste das ergebnis sein!
habs auch mit der formel: y=2*2^(x-1)
wobei x die anzahl der multiplikationsvorgänge(also halt von 1 hochgezählt) angibt
y ist hierbei gleich die gesamtanzahl
kommt dann auch 1 zu viel raus
hab ein Script entworfen dass zahlen(immer der doppelte wert der vorherigen zahl) in ein array speichert!
Nur ab ca. 60 mal verdoppeln, ist die gesamtsumme einfach um 1 zu hoch! woran liegt das?
Hier das script:
PHP:
$number = array();
$numberclean = array();
echo '<table border="1">';
//Beispielwert von 60
for ($x=1; $x<=60; $x++) {
$pownumber = $x-1;
//wusste nicht, wie ichs am besten ohne rundung hinbekomm! so gehts aba ja auch
$numberclean[$x] = number_format(pow ( 2, $pownumber ), 0, ",", "");
$number[$x] = number_format(pow ( 2, $pownumber ), 0, ",", ".");
echo '<tr><td>'.$number[$x].' </td><td> ('.$x.')</td></tr>';
}
$allnumbers = number_format(array_sum($numberclean), 0, ",", ".");
echo '</table>';
echo '<br/>Alle Zahlen zusammen ergeben '.$allnumbers.'!<br/>';
print_r($numberclean);
print_r gibt mir das array aus, und alles stimmt!
allerdings gibt array_sum ab ca. 60 (habs in zehnerschritten probiert, 50 ging noch, 60 war da ergebnis eines zu viel) aus!
kann doch eigentlich nicht sein dass es einfach so 1 dazuzählt?!
mfg
ps:
print_r gibt folgendes aus:
Code:
Array ( [1] => 1 [2] => 2 [3] => 4 [4] => 8 [5] => 16 [6] => 32 [7] => 64 [8] => 128 [9] => 256 [10] => 512 [11] => 1024 [12] => 2048 [13]
=> 4096 [14] => 8192 [15] => 16384 [16] => 32768 [17] => 65536 [18] => 131072 [19] => 262144 [20] => 524288 [21] => 1048576 [22]
=> 2097152 [23] => 4194304 [24] => 8388608 [25] => 16777216 [26] => 33554432 [27] => 67108864 [28] => 134217728 [29]
=> 268435456 [30] => 536870912 [31] => 1073741824 [32] => 2147483648 [33] => 4294967296 [34] => 8589934592 [35] =>
17179869184 [36] => 34359738368 [37] => 68719476736 [38] => 137438953472 [39] => 274877906944 [40] => 549755813888
[41] => 1099511627776 [42] => 2199023255552 [43] => 4398046511104 [44] => 8796093022208 [45] => 17592186044416 [46] =>
35184372088832 [47] => 70368744177664 [48] => 140737488355328 [49] => 281474976710656 [50] => 562949953421312 [51] =>
1125899906842624 [52] => 2251799813685248 [53] => 4503599627370496 [54] => 9007199254740992 [55] => 18014398509481984
[56] => 36028797018963968 [57] => 72057594037927936 [58] => 144115188075855872 [59] => 288230376151711744 [60] =>
576460752303423488 )
der gesamtwert ergibt aber komischerweiße 1.152.921.504.606.846.976
was gar nicht möglich ist, da alle zahlen bis auf die 1 gerade zahlen sind
-->ungerade zahl müsste das ergebnis sein!
Ergänzung ()
habs auch mit der formel: y=2*2^(x-1)
wobei x die anzahl der multiplikationsvorgänge(also halt von 1 hochgezählt) angibt
y ist hierbei gleich die gesamtanzahl
kommt dann auch 1 zu viel raus
Zuletzt bearbeitet: