int // float problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • int // float problem

    folgendes script:


    $a = (float) -4580427881;
    $d = (int) 390798;

    var_dump($a);
    var_dump($d);
    $e = (int) $a ^ (int) $d;
    var_dump($e);


    liefert bei mir auf verschiedenen rechnern verschiedene ergebnisse.

    float(-4580427881) int(390798) int(-2147092850)

    float(-4580427881) int(390798) int(-285621991)

    ich zunächst angenommen das es an php4/5 umstellung liegt ... aber auch das konnte ich ausschliessen (auf einem rechner php4 und php5 als cgi liefern auch beide das falsche), jetzt bin ich mit meinem latein am ende - das wünschenswerte // richtige ergebnis ist das letztere ... also

    float(-4580427881) int(390798) int(-285621991)

    local mit meinem xampp bekomme ich das auch auf 1-2 meiner webserver auch ... auf den produktiv servern (ich glaube da laufen debian-testing php5 pakete) bekomme ich aber das falsche ergebnis mit dem negativen maxinst (-2147xxx)


    hat irgend einer eine idee oder einen hinweis, woran das liegen könnte?

  • #2
    aus documentation zur Interger
    http://de2.php.net/manual/de/language.types.integer.php
    <<
    Die Größe eines Integer-Wertes ist plattformabhängig, ein Maximalwert von ungefähr zwei Milliarden ist jedoch üblich (vorzeichenbehafteter 32-Bit-Wert). PHP unterstützt keine vorzeichenlosen Integer-Werte.
    >>
    ungefähr zwei Milliarden ist üblich aber nicht garantiert.
    hast du möglichkeit GMP zu installieren?
    http://de2.php.net/manual/de/ref.gmp.php
    Slava
    bituniverse.com

    Kommentar


    • #3
      ich hab das sowohl auf linux als auch auf windows platformen eingesetzt ... das ergebnis war unabhängig vom betriebssystem ich habe auf verschiedenen debian rechner die beiden verschiedenen ergebnisse

      - dennoch werde ich mir den tipp mal zu herzen nehmen und gmp antesten - danke


      für weitere tips / gedankenanstösse bin ich nach wie vor offen

      Kommentar

      Lädt...
      X