+ Antworten
Ergebnis 1 bis 7 von 7
  1. #1
    Registriert seit
    Oct 2011
    Ort
    Hattersheim (Hessen)
    Beiträge
    4,890

    Standard Problem Umwandlung in Integer

    Nachdem etwas bei mir nicht funktioniert hat, bin ich auf die Suche gegangen und habe folgendes Phänomen gefunden.

    Funktioniert:
    PHP-Code:
    $string "34560";
    var_dump($string);
    $number intval($string);
    var_dump($number); 
    Ausgabe:
    Code:
    string(5) "34560"
    int(34560)
    Funktioniert nicht:
    PHP-Code:
    $string "6232364702572216320";
    var_dump($string);
    $number intval($string);
    var_dump($number); 
    Ausgabe:
    Code:
    string(19) "6232364702572216320"
    int(2147483647)

    Benutzt wird IP-Symcon 5 Beta.

    Ist das ein Bug in IP-Symcon 5 Beta, ein Bug in PHP 7 oder was mache ich da falsch? Ich will einfach nur den String zu einem Integer umwandeln.

  2. #2
    Registriert seit
    Oct 2011
    Ort
    Hattersheim (Hessen)
    Beiträge
    4,890

    Ok, ich habe was gefunden was das zumindest erklärt:
    Intval
    Zitat Zitat von http://php.net
    The maximum value depends on the system. 32 bit systems have a maximum signed integer range of -2147483648 to 2147483647. So for example on such a system, intval('1000000000000') will return 2147483647. The maximum signed integer value for 64 bit systems is 9223372036854775807.
    Nur wie löse ich jetzt das Problem, das dennoch in ein Integer umzuwandeln? Oder muss ich damit leben, dass das eben ein String bleibt und schauen wie ich damit zurecht komme?

  3. #3
    Registriert seit
    Apr 2017
    Beiträge
    342

    Zitat Zitat von Fonzo Beitrag anzeigen
    Nur wie löse ich jetzt das Problem, das dennoch in ein Integer umzuwandeln? Oder muss ich damit leben, dass das eben ein String bleibt und schauen wie ich damit zurecht komme?
    Der Wertebereich eines Integer ist halt beschränkt, und das gff. auch plattformabhängig.
    Warum soll es ein Integer sein für deine Aufgabe? Brauchst du die volle Auflösung mit allen Stellen?
    KNX-TP, KNX-RF

  4. #4
    Registriert seit
    Oct 2011
    Ort
    Hattersheim (Hessen)
    Beiträge
    4,890

    Zitat Zitat von volkerm Beitrag anzeigen
    Warum soll es ein Integer sein für deine Aufgabe? Brauchst du die volle Auflösung mit allen Stellen?
    Wie Du sagst, habe ich das jetzt als String belassen, das ist für den Zweck ok, weil es nur ein eindeutiger Identifikator ist. Es muss also auch nicht damit gerechnet werden, daher kann das auch String bleiben, ich brauche aber die komplette Länge für die Aufgabenstellung.

  5. #5
    Registriert seit
    Dec 2011
    Ort
    am Ende des Internets
    Beiträge
    292

    Zitat aus PHP-Handbuch:

    Beispiel #3 Integer overflow on a 64-bit system

    PHP-Code:
    <?php
    $large_number 
    9223372036854775807;
    var_dump($large_number);                     // int(9223372036854775807)

    $large_number 9223372036854775808;
    var_dump($large_number);                     // float(9.2233720368548E+18)

    $million 1000000;
    $large_number =  50000000000000 $million;
    var_dump($large_number);                     // float(5.0E+19)
    ?>
    Wie Du allerdings auf ein 64-bit system kommst, weiß ich auch nicht
    (Vielleicht kommt das noch mit einer höheren PHP-Version ?)

    Viele Grüsse
    Harald

  6. #6
    Registriert seit
    Oct 2011
    Ort
    Hattersheim (Hessen)
    Beiträge
    4,890

    Zitat Zitat von T30 Beitrag anzeigen
    Wie Du allerdings auf ein 64-bit system kommst, weiß ich auch nicht
    Wie volkerm schon schrieb, ist der Wertebereich halt von der Plattform abhängig und daher begrenzt bei 32 bit Systemen:
    32 bit systems have a maximum signed integer range of -2147483648 to 2147483647.

  7. #7
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    6,814

    Das Thema gab es schon Mal, weil PHP 5.x einfach mit Float getrickst hat:
    IPS_RunScriptEx Parameter Conversion Error
    Außerdem kann IPS aktuell eh nur mit 32Bit Zahlen umgehen, auch unter Win64!
    Somit am besten große (int) Zahlen vermeiden, wenn man für alle IPS Varianten kompatibel sein will.
    Michael
    Geändert von Nall-chan (13.06.18 um 16:34 Uhr)
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

Ähnliche Themen

  1. Problem von Integer Variablen mit aktuellem Testing 4.1 Update
    Von helhau im Forum Allgemeine Diskussion
    Antworten: 2
    Letzter Beitrag: 29.09.16, 13:28
  2. Apple watch - Bug - Problem mit Slider/Integer-Variable
    Von Bayaro im Forum Mobile (iOS/Android)
    Antworten: 2
    Letzter Beitrag: 28.09.15, 08:27
  3. Problem mit Status der Integer-Variable
    Von BommelPommel im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 8
    Letzter Beitrag: 09.07.12, 16:15
  4. SQL-Integer != PHP-Integer ?
    Von chrissiboy im Forum Skripte, PHP, SQL
    Antworten: 6
    Letzter Beitrag: 23.07.11, 19:43