login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Te groot getal probleem

Offline NLZ - 09/01/2010 13:38 (laatste wijziging 09/01/2010 13:38)
Avatar van NLZNieuw lid Ik moet in php code een getal ergens bij optellen. Maar dit is een vast getal, en het is een groot getal.
Maar het lijkt erop dat php zo een groot getal niet ondersteunt.

Als ik dit doe bv:
  1. $var = 76561197960265728;
  2. echo $var;


dan krijg ik als output:
76561197960266000

Dus het lijkt dat er een limiet opzit ofzo  

Weet iemand hoe ik dit kan oplossen?

14 antwoorden

Gesponsorde links
Offline Filip - 09/01/2010 13:49
Avatar van Filip IRC guru Er is inderdaad een limiet op de grote van een INT(eger)..

Als je effe googled vind je die wel, ken het nie van buiten een geen zin om te googlen 
Offline NLZ - 09/01/2010 14:01
Avatar van NLZ Nieuw lid @nephilim

Heb al wat gezocht hoor 
Maar kan niet echt iets vinden
Offline vinTage - 09/01/2010 14:06
Avatar van vinTage Nieuw lid PHP.net: number_format zou kunnen (iets anders weet ik zo snel niet )
Offline henver - 09/01/2010 14:08
Avatar van henver HTML gevorderde Integers hebben een bereik van -2147483647 tot +2147483647.
Offline NLZ - 09/01/2010 14:11
Avatar van NLZ Nieuw lid @vinTage Dat is volgens mij alleen voor kommagetallen.
@henver Wat is er dan groter als integers?  
Offline vinTage - 09/01/2010 14:20
Avatar van vinTage Nieuw lid
NLZ schreef:
@vinTage Dat is volgens mij alleen voor kommagetallen.


Dus je hebt niks getest 
Offline NLZ - 09/01/2010 14:22 (laatste wijziging 09/01/2010 14:24)
Avatar van NLZ Nieuw lid Ik denk niet dat het werkt met die functie.
Maar zal eens proberen 
Offline Martijn - 09/01/2010 14:28
Avatar van Martijn Crew PHP is er ook niet iets van een big_int?

@ henver, als je m op unsigned zet gaat ie van 0 naar het dubbele van 2147483647


Optie twee, zet het als tekst in je database, dus een varchar met 15 als lengte, en in je script maak je er weer n getal van 
Offline vinTage - 09/01/2010 14:31
Avatar van vinTage Nieuw lid @martijn sql ?
Offline NLZ - 09/01/2010 14:54 (laatste wijziging 09/01/2010 14:59)
Avatar van NLZ Nieuw lid @Martijn
Als ik hem als varchar in de db krijg, krijg ik nog de foute waarde in de db.
Omdat ik eerst die berekening moet doen om hem in de db te kunnen zetten. En die waarde is al fout bij de berekening.

@vinTage Ik heb die number format geprobeerd. Dat doet eigenlijk wat het zou moeten doen. Alleen, het komt 1 te weinig uit. Als ik er 1 aan toevoeg ofzo doet niets. En als ik er dan 100 aan toevoeg om te testen komt de eindwaarde 4 te weinig uit.

  1. $steamid = 'STEAM_0:1:5654936';
  2. $expl = explode(":",$steamid);
  3. $community_id = number_format(((($expl[2] * 2) + $expl[1]) + 76561197960265728), 0, ".", "");
  4. echo "<br /><a href='http://steamcommunity.com/profiles/".$community_id.'>'.$steamid.'</a>';


Dit zou als getal:
76561197971575601
moeten uitkomen

maar de waarde komt:
76561197971575600 uit

die $expl[1] is altijd 0/1
Het lijkt alsof deze niet word toegevoegd. Maar als ik hem echo geeft hij wel "1" weer.
Offline TotempaaltJ - 09/01/2010 15:53
Avatar van TotempaaltJ PHP interesse Gewoon een klein vraagje, wat is 76561197960265728 eigenlijk? 
Offline NLZ - 09/01/2010 17:17
Avatar van NLZ Nieuw lid
Bigboss schreef:
Gewoon een klein vraagje, wat is 76561197960265728 eigenlijk? 

Eén of ander random getal dat er telkens bij opgeteld word om een bepaald nummer te krijgen. Vraag mij niet waarom het dit getal is.
Offline Koen - 09/01/2010 19:57
Avatar van Koen PHP expert http://sitemasters.be/koen/longint.php
Werk perfect hier...
Offline NLZ - 09/01/2010 20:15 (laatste wijziging 09/01/2010 20:16)
Avatar van NLZ Nieuw lid
Koen schreef:

Weird. iets in php.ini dan ?


Ik heb het nu werkende door een javascript bestandje dat ik gevonden heb. die geeft geen problemen.
(als volgt:)
  1. <script type="text/javascript">
  2.  
  3. function convert(steamID)
  4. {
  5. var parts = steamID.split(":");
  6.  
  7. var iServer = Number(parts[1]);
  8. var iAuthID = Number(parts[2]);
  9.  
  10. var converted = "76561197960265728"
  11.  
  12. lastIndex = converted.length - 1
  13.  
  14. var toAdd = iAuthID * 2 + iServer;
  15. var toAddString = new String(toAdd)
  16. var addLastIndex = toAddString.length - 1;
  17.  
  18. for(var i=0;i<=addLastIndex;i++)
  19. {
  20. var num = Number(toAddString.charAt(addLastIndex - i));
  21. var j=lastIndex - i;
  22.  
  23. do
  24. {
  25. var num2 = Number(converted.charAt(j));
  26. var sum = num + num2;
  27.  
  28. converted = converted.substr(0,j) + (sum % 10).toString() + converted.substr(j+1);
  29.  
  30. num = Math.floor(sum / 10);
  31. j--;
  32. }
  33. while(num);
  34.  
  35. }
  36.  
  37. return "<a href='http://steamcommunity.com/profiles/" + converted + "'>" + steamID + "</a>";
  38. }
  39. </script>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.221s