worst_case: Integer nach echte Double wandeln.

Hallo,

ich bekomme eine Zahl im Integerformat, ist aber in Wirklichkeit eine Double-Zahl. Da die Übergabeschnittstelle nur Integerformat kann.

z.B.

Integer: 1094818202

ist in Wirklichkeit

Double: 12.1

In C schreibe ich die Zahl in eine Integer Variable und lese dann die Speicheradresse als Double aus... und schon funktioniert es. Wie sieht es aber hier mit JavaScript aus. Gibt es keine Funktion/Befehl mit dem man dieses Problem lösen könnte.

Danke
 worst_case

  1. Hallo worst_case,

    z.B.
    Integer: 1094818202
    ist in Wirklichkeit
    Double: 12.1

    Typecasten kenn ich unter Java so: (double) <IntegerWert>
    Da wird zB aus 1094 eine 1094.0. In JavaScript gibt es diese Trennung meines Wissens nicht unbedingt. Du könntest aber durch Multiplikation mit 1.0 explizit einen Double aus dem int machen.

    Mit freundlichem Gruß
    Micha

    1. Hallo

      Du könntest aber durch Multiplikation mit 1.0 explizit einen Double aus dem int machen.

      Nein das geht nicht. Ich lese die Daten aus einem Shared-Memory Bereich im Integerformat z.B. 1094818202 mit einem Perl-CGI Script.
      (dies läuft automatisch mit Ajax)

      Nun will ich die Daten ja unterschiedlich anzeigen. Hier hätte ich zwei Möglichkeiten.
      1. Ich wandle die Daten mit Javascript in das gewünschte Format (das wäre die Ideallösung)

      2. Ich gebe über Ajax dem Perl-CGI Script mit, wie die Daten von Perl geholt werden und formatiert sollen. Hierzu müsste ich im HTML-Tag ein Attribut haben in das ich das Format schreiben kann, dieses automatisch auselesen über Ajax an CGI-Script und wieder zurück.
      (umständliche Lösung, Problem mit HTML-Tag)

      wenn jemand eine andere Lösung hat... nur her damit.
      Ich mache alles mit Ajax automatisch ... lese alle "id's" sende alle zum Perl-Script, Perl-Script sendet "id's" mit Daten im JSON-Format zurück und eine schleife verteilt alle Daten. Diese System soll beibehalten werden.

      Danke
                  worst_case

      1. Hallo worst_case,

        oh, ich hatte Dich falsch verstanden - sry.

        Mit freundlichem Gruß
        Micha

      2. Hallo,

        Nun will ich die Daten ja unterschiedlich anzeigen. Hier hätte ich zwei Möglichkeiten.

        1. Ich wandle die Daten mit Javascript in das gewünschte Format (das wäre die Ideallösung)

        Das ist garantiert nicht die Ideallösung.
        Du hast eine JSON-Schnittstelle, also sollte das Programm, dass JSON-Ausgabe erzeugt, auch korrekte JavaScript-Zahlen erzeugen. JavaScript ist wirklich nicht der Ort, um Werte von einem internen Speicherformat in ein brauchbares umzuwandeln. Abgesehen davon wüsste ich gar nicht, wie - ich kenne zwar JavaScript, aber nicht das Double-als-Integer-Speichern des Shared Memories. Mit sowas hat JavaScript nichts zu tun, bietet deshalb wahrscheinlich auch keine eingebaute Umwandlungsfunktion an. Aber da es wahrscheinlich auch nur Mathematik ist, ist es sicher mit einer eigenen Funktion möglich. Da müsstest du halt googlen oder selbst programmieren.

        1. Ich gebe über Ajax dem Perl-CGI Script mit, wie die Daten von Perl geholt werden und formatiert sollen. Hierzu müsste ich im HTML-Tag ein Attribut haben in das ich das Format schreiben kann, dieses automatisch auselesen über Ajax an CGI-Script und wieder zurück.
          (umständliche Lösung, Problem mit HTML-Tag)

        Ich verstehe das Problem wirklich nicht. JSON ist JSON, eine solche Schnittstelle sollte Zahlen nicht irgendeiner fremden Schreibweise liefern, sondern halt als ordentliches Number-Literal. Was hat HTML damit zu tun? Wieso musst du dem Perlscript ausdrücklich sagen, dass es korrektes JSON erzeugen soll? ;)

        Mathias

  2. Hallo,

    ich bekomme eine Zahl im Integerformat, ist aber in Wirklichkeit eine Double-Zahl. Da die Übergabeschnittstelle nur Integerformat kann.

    z.B.

    Integer: 1094818202

    ist in Wirklichkeit

    Double: 12.1

    In C schreibe ich die Zahl in eine Integer Variable und lese dann die Speicheradresse als Double aus... und schon funktioniert es.

    Hm, wirklich double, nicht float? Denn: int 1094818202 = hex 4141999A ist nur Single-precision 32 bit.

    Wie sieht es aber hier mit JavaScript aus. Gibt es keine Funktion/Befehl mit dem man dieses Problem lösen könnte.

    Nein, mit JavaScript kannst Du keinen Arbeitsspeicherbereich direkt adressieren, um die dort gespeicherten Bits in einen anderen Kontext zu bringen.

    Du müsstest also mathematisch von der IEEE-754 hex-representation 4141999A (32 bit) zurückrechnen. Hier wird das gemacht.

    Allerdings finde auch ich, dass dies eher die serverseitige Programmlogik machen sollte, welche das JSON erzeugt.

    viele Grüße

    Axel